親クラスとしてクラスAがあり、それを拡張するクラスCがあるとします。
class A
{
void m()
{
System.out.println("A.m");
}
}
class C extends A
{
@Override
void m()
{
System.out.println("C.m");
}
}
A a
参照とC c
、それらを使用して同じオブジェクトタイプを指す場合、たとえばA a = new C();
との違いは何C c = new C();
ですか?
この質問から:Java継承とC#継承a
は、Cのオブジェクトタイプを指しているように見え、c
それらを使用することに違いはないようです。
私はこのコードをテストしました、そしてそれらはすべて印刷しC.m
ます。
class inherit {
void x(A a)
{
a.m();
}
public static void main(String[] args) {
System.out.println("hello");
A a = new C();
C c = new C();
a.m();
c.m();
new inherit().x(a);
new inherit().x(c);
}
}