我写了这段代码:
class A {
int a;
void method() {
System.out.println("Overridden method of Class A called!");
}
void method2() {
System.out.println("Normal Method of Class A called!");
}
}
class B extends A {
int b;
void method() {
System.out.println("Overridden method of Class B called!");
}
void method1() {
System.out.println("Normal Method of Class B called!");
}
}
class C {
public static void main(String[] args) {
A a1 = new A();
B b1 = new B();
a1 = b1; // ***Line 1***
System.out.println("After referencing!");
a1.method();
a1.method2();
A a2 = new B(); // ***Line 2***
a2.method();
a2.method2();
}
}
第 1 行和第 2 行在上面的代码中用注释标记
现在,我对Line 1的物理意义有了一些了解,但是Line 2到底是什么意思呢?内存是如何分配给类型 A 的对象“ a2 ”的?这种对象的性质和行为是什么,它与普通实例化有何不同?第 1 行和第 2 行是否传达相同的含义?如果是这样,怎么做?如果不是,它们有何不同,因为显然它们提供相同的输出。