サンプルのポリモーフィズムの概念を説明する次のサンプルコードがあります-オーバーライド
クラススーパー { public int 番号 = 1; public char superText='a'; public String getColor() { 「赤」を返します。 } } クラスサブはスーパーを拡張します { public int 番号 = 2; public char subText='b'; public String getColor() { 「青」を返します。 } } 公開クラス Sample2 { public static void main(String[] args) { スーパースーパーサブ = 新しいサブ (); System.out.println( supersub.getColor() + supersub.number + supersub.superText ); } }
出力は blue1 です。
質問1:
派生クラス getColor() の Method がオーバーライドされ、Super クラスの Field が表示されます。
派生クラスの数値フィールドが呼び出されない理由を説明できますか? つまり、出力は blue2 です
質問 2: *メモリ割り当てについて*
以下のオブジェクトのインスタンス化のために、
Sub subobj = new Sub();フィールド 'number' のメモリがヒープに割り当てられ、Number 変数のアドレスがオブジェクト参照 subobj に割り当てられます。
以下のケースを検討してください。
スーパースーパーサブ = 新しいサブ ();
(a)ここで、派生クラス「Sub」の変数「number and subText」のメモリが作成され、変数のアドレスがスーパーサブ オブジェクトに配置されます。
アクセスすると、supersub.subText で subText が解決できないというエラーが出ました。
SO, PLAIN POINT (a)上記の (a) すなわち、Derive Class 変数のメモリ割り当て
ありがとう、サイボーグズ