public class T {
public static void main(String[] args) {
ClassA p0 = new ClassA();
ClassB p1 = new ClassB();
ClassC p2 = new ClassC();
ClassA p3 = new ClassB();
ClassA p4 = new ClassC();
System.out.println(p0 == p1);
System.out.println(p1 == p3);
System.out.println(p2 == p4);
}
}
console output:
false
false
false
一看就知道肯定不可能相等的,但还是写代码测试给你看。
他们是不同的对象(类的实例),所以不可能相等。
如果你的 p0 = p1 是赋值的话,那是可以的。因为p0是父类的引用,可以指向子类的实例。
反过来就不行,必须强转。
希望能帮到你。
补充:
你补充了你的问题
A.p0 = p1;B.p1 =p2;C.p2 = p4;D.p2 = (ClassC)p1;
A p0是父类的引用可以指向子类的实例,编译成功。
B p1和p2是两个类的对象的引用,不可以互相转化。编译失败。
C p2是子类的引用,p4是父类的引用,需要强转才行。
D 同B
发出来看看
写了什么东西
报错的是什么