[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00330] Re: java のオーバーライドについて
お久しぶりのみどりです。
最近は、なぜか、私の嫌いなLook and Feel系の仕事が多く、
FOPなんかもつかってます。
ちょっと、気づいたので、、、。
えんどう <yasuyuki@xxxxxxxxxxxx> wrote:
>
> えんどうです。
>
> > public Vector3fArrayList(){
> > list = new ArrayList();
> > }
>
> これ↑はコンストラクターだとして、
>
> > public Vector3f get(int i){ /* 戻りの型はArrayList.get(int)と互
> >換性がありません。*/
> > return (Vector3f) list.get(i);
> > }
>
> これは何なのでしょうか。メソッドであれば戻り型が必要です。
これは、なかなか、、、、。
Vector3f という別のクラスがあるんですよね。
それが、Vector3fArrayList の要素になっている。
で、このメソッドの get の戻り値は、List の要素を
Vecror3f でキャストしていると、読めます。
java.util.ArrayList
|
Class Vector3fArrayList
get
public Vector3f get(int i)
としたいのかとおもいます。でも、Overrideの場合、hierarchy間で
パラメーターと戻り値の型は同じでなければなりません。
その他に、何点か気づいた事を、、.
まず、Vector3fArrayList は ArrayList にExtendしているから、
それ自身が ArrayList で
別に、ArrayList を持つ必要はありません。
それから、これは、質問の本質とは関係ありませんが、
main メソッドは、スタティックで無ければ成りません。
私は、基本的にあまやかしやですから、
Vector3f を Integer だと思って書き直してみました。
public class IntegerArrayList extends Arraylist
{
public IntegerArrayList()
{
super();
}
public static void main(String args[])
{
IntegerArrayList val = new IntegerArrayList();
Integer int1 = val.getInteger(0);
}
public Integer getInteger(int i)
{
return (Integer)get(i);
// または、(Integer)this.get(i);
}
}
と、オーバーライドはどこかへ行ってしまいまいした。
最後にもうひとつ。main メソッドのなかで、IntegerArrayList を
Instatiate していますが、中身は空っぽです。だから、
val.getInteger(0)は IndexOutBoundException になるはずです。
--
Midori Aida <maida@xxxxxxxxxxxx>