"継承"のどちらの方向に進むか注意しなければなりません。あなたが知っているように、「継承」は「関係がある」ということを定義することです。基本クラスがフィールドを定義する場合、メソッドは派生クラスでアクセスすることができます。
Javaでは、任意の整数はオブジェクトです。配列は、オブジェクトです。
逆方向の場合はそうではありません。任意のオブジェクトはではなく、の配列です!意味:bar = new Object()
のようにオブジェクトを作成した場合、バーには配列のプロパティがありません。 バーがオブジェクトであるためです。配列ではありません。
したがって、Objectがではないため、配列にが含まれていないため、Objectで「length」が見つかりません。
しかし、オブジェクトは次のように、「本当に」何か他のものであれば当然のことながら、:
int[] anotherRefToNumbers = (int[]) foo;
編集:ちょうど与える
int[] numbers = { 1, 2, 3 };
Object foo = numbers;
、あなたはいつものようにキャストを、行うことができます異なる視点。座って紙の上に円を描くと、このサークルは「形状」(またはあなたがそれを誰と呼んでもよい)でもあります。しかし、あなたが描くことができるすべての形...が円になるわけではありません。
'Object'に' length'が定義されていないので、 –
と同じ理由で、asdf変数またはfoobar変数を見ることができません。 – immibis
長さフィールドはどこで定義されていますか? – FaisalAhmed