首页 > 解决方案 > 继承和equals方法

问题描述

我有以下代码,问题是equals会调用什么函数?答案是 - equalsObject 类的,有人可以解释为什么吗?我认为equals将调用 A 类,因为在运行时 a 是 A 并且 A 对 A 类具有适当的equals功能,因为 b 是 A 类的引用。为什么我的假设是错误的?

public class MainClass
{

  public static void main(String[] args)
  {

    Object a = new A();
    A b = new B();

    System.out.println(a.equals(b));

  }
}


public class A
{
    public boolean equals (A other)
    {
      System.out.println("a");
      return true;
    }
}

public class B extends A
{

    public boolean equals (Object other)
    {
      System.out.println("b");
      return true;
    }

    public boolean equals (B other)
    {
      System.out.println("c");
      return true;
    }
}

标签: javaoop

解决方案


推荐阅读