1

だから、ここでいくつかの概念を理解しようとしています。

1) 新しいオブジェクトを作成するための一般的な「構文」(もしそうなら)。たとえば、次のうち「正しい」ものはどれですか (オブジェクトをインスタンス化する方法が複数あることは知っています)。

//1) ChildClass obj = new ParentClass();

//2) ParentClass obj = new ChildClass();

次の 2 つが「合法」であることはわかっていますが、子/親クラスに関しては、オブジェクトのインスタンス化の違いがわかりません。

(これら2つが大丈夫であることはすでに知っています):

ChildClass obj = new ChildClass();
ParentClass obj = new ParentClass();

2)基本的に、私が尋ねようとしているのは、「オブジェクトがインスタンス化されたクラスを参照するクラス名はどれですか(言い回しですか?申し訳ありません...)、オブジェクトはどのクラス名に属していますか?」

これが本当に意味をなさない場合は、申し訳ありません。なるべく言葉にしてみました。

(いくつかの背景: 私は現在、オブジェクト指向 Java の最初の「コース」を受講しています)

4

1 に答える 1

4

ChildClassから拡張する場合はParentClass、次のことができます

ParentClass obj = new ChildClass();

しかし、その逆ではありません。

この宣言の左側は、obj宣言された型または静的型の名前付き変数ParentClassを現在のスコープに配置しています。右側では、変数newに動的タイプのオブジェクトへの参照を割り当てていますChildClassChildClassオブジェクトがインスタンス化され、タイプ の変数に割り当てられていますParentClass

言い換えれば、変数objを使用すると、コンパイラが満足するために、宣言された型で宣言されたメソッドにのみアクセスできます。ParentClass. メソッドを呼び出したい場合ChildClassは、キャストする必要があります。

((ChildClass)obj).someChildClassMethod();
于 2013-09-18T03:22:31.137 に答える