源代码如下:
class Person{
   private String name;
   private int age;
   public Person(String name,int age){
      this.name=name;
      this.age=age;
   }
   public String getName(){
      return this.name;
   }
   public int getAge(){
      return this.age;
   }
   public boolean equals(Person p){
      return this.getName().equals(p.getName())&&this.getAge()==p.getAge();
   }
}因为每个类都继承自Object,所以每个类都有equals()方法,但Object的equals()方法参数为Object,而我自己重载的equals方法的参数Person也继承自Object,那当我调用equals方法的时候,会调用那个?

解决方案 »

  1.   

    向你那样说  那java里面什么类型就都没有  只有一个object类 ?
      

  2.   

    看你传入的参数是什么类型了,如果是Person肯定调用的是你自己的,其他非Person子类,应该调用的就是Object的equals方法。
    如果是重写的话,就是覆盖该方法,以后子类调用该方法都是自己的。
      

  3.   

       首先,在java中这不叫重载(overload),而叫重写(override)。重载是针对一个类中的方法而言的;而重写则涉及到继承。其次,当你调用person对象的equals方法时,实际上调用的就是你重写过的。
      

  4.   

    自己回去运行运行
    class Person{
       private String name;
       private int age;
       public Person(String name,int age){
          this.name=name;
          this.age=age;
       }
       public String getName(){
          return this.name;
       }
       public int getAge(){
          return this.age;
       }
       public boolean equals(Person p){
          return this.getName().equals(p.getName());
       }
    }
    class Students extends Person{
    public Students(String name,int age){
    super(name,age);
    }
    public boolean equals(Students s){
    return !this.getName().equals(s.getName());
    }
    }
    class OverrideTest{
       public static void main(String[] args){
          Person p=new Students("zhangsan",18);
          Person q=new Students("zhangsan",19);
          System.out.println(p.equals(q));
          
          Person p1=new Students("zhangsan",18);
          Students q1=new Students("zhangsan",19);
          System.out.println(p1.equals(q1));
          
          Students p2=new Students("zhangsan",18);
          Students q2=new Students("zhangsan",19);
          System.out.println(p2.equals(q2));
          
          Students p3=new Students("zhangsan",18);
          Person q3=new Students("zhangsan",19);
          System.out.println(p3.equals(q3));
       }
    }