如何在java中找到多态的正确方法

时间:2016-03-23 21:01:54

标签: java inheritance polymorphism

我下面有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。但为什么呢?

0 个答案:

没有答案