我下面有4个小班。
public class A
{
protected int _i;
public A(int i)
{
_i = i;
}
}
public class B extends A
{
public B(int i)
{
super(i+1);
}
}
public class D extends B
{
public D(int i)
{
super(i+1);
}
public boolean equals (D other)
{
return ((other!=null) && (_i==((D) other)._i));
}
}
这是主要代码:
public class DriverABCD
{
public static void main (String [] args) {
D d = new D(1);
Object d1 = new D(1);
System.out.println (d1.equals(d));
}
}
两个类中的实例变量应设置为“3”。但是,System.out.println (d1.equals(d));
返回FALSE。仅当我将D类中的equals()方法签名更改为:
public boolean equals (Object other)
{
return ((other!=null) && (_i==((D) other)._i));
}
它将返回TRUE。但为什么呢?