サンプルのポリモーフィズムの概念を説明する次のサンプルコードがあります-オーバーライド
クラススーパー
{
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 変数のメモリ割り当て
ありがとう、サイボーグズ