求Java大神

2025-03-02 14:29:40
推荐回答(2个)
回答1:

  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

回答2:

发出来看看
写了什么东西
报错的是什么