親子関係では、親の参照を取得して、これまでと同様に子のオブジェクトを作成できます。
Superclass a;
a = new ChildClass();
a
ただし、オブジェクトがその参照クラスの設計図に従うという条件が 1 つあります。つまり、あなたの場合a
、Superclass の参照があるためa
、ChildClass ではなく Superclass で定義されているすべてのメソッドにアクセスできます。
したがって、 ChildClass a = new ChildClass() a. setname("Roger");を持たないタイプ Superclass であるため、への呼び出しa.setname("Roger");
は有効ではありません。setname(String) メソッド。a
setname(String) method but if you do something like
then your call to
will be valid because
is of type ChildClass which has
もう1つ、次のような構造があるとしましょう:
class SuperClass
{
public SuperClass();
public void setName(String name)
{
System.out.println("setName() of SuperClass with name "+name);
}
}
class ChildClass extends SuperClass
{
public ChildClass();
public void setName(String name)
{
System.out.println("setName() of ChildClass with name "+name);
}
}
そして、あなたはそれをメインで次のように呼び出します:
ChildClass a;
a = new ChildClass();
a.setname("Roger");
そのため、出力でコンパイルおよび実行されます
Roger という名前の ChildClass の setName()。
そして、この出力の本当の理由を知っていると確信しています。:)