• 締切済み

JAVAのプログラムについて

////////////////////////////////////////////////////////////////// abstract class Time_D { abstract Object Sec(); abstract Object Min(); abstract Object Hour(); } ////////////////////////////////////////////////////////////////// class PresentTime_D extends Time_D { Object Sec() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("s"); return new Integer(Integer.parseInt(formatter.format(tm))); } Object Min() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("m"); return new Integer(Integer.parseInt(formatter.format(tm))); } Object Hour() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("h"); return new Integer(Integer.parseInt(formatter.format(tm))); } } //////////////////////////////////////////////////////////////// class SetTimeCheck_D extends PresentTime_D { int settime; SetTimeCheck_D(int _settime) { settime = _settime; } //-------------------------------------------------- Object Sec() { return new Boolean(((Integer)super.Sec).intValue == settime); } Object Min() { return new Boolean(((Integer)super.Min).intValue == settime); } Object Hour() { return new Boolean(((Integer)super.Hour).intValue == settime); } } 上記のようなプログラムをした場合、下記のようなエラーが出ます。 return new Boolean(((Integer)super.Sec).intValue == settime); } のSecはPresentTime_Dのクラス内のフィールドではありません。 なぜ、このようなエラーが出るのですか?

みんなの回答

  • snnk
  • ベストアンサー率60% (3/5)
回答No.1

クラスSetTimeCheck_D内の各super.Sec,super.Min,super.Hourは、 インスタンスとして定義されていません。 この場合、それぞれはメソッドとして定義しているため下記のように記述する必要があります。 super.Sec() super.Min() super.Hour() また、それに合わせて、Integerクラスの使用方法も誤解があるみたいです。 Integerクラス内にintValueフィールドは存在していません。これもメソッドです。

cyan1110
質問者

お礼

やっと意味がわかりました。ありがとうございました。

関連するQ&A