关于重载的问题

ncnaf 2012-05-31 05:01:02
源代码如下:
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方法的时候,会调用那个?
...全文
116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ncnaf 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

向你那样说 那java里面什么类型就都没有 只有一个object类 ?
[/Quote]
垃圾一个,滚回幼儿园
ncnaf 2012-06-01
  • 打赏
  • 举报
回复
自己回去运行运行
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));
}
}
iLemon 2012-05-31
  • 打赏
  • 举报
回复
首先,在java中这不叫重载(overload),而叫重写(override)。重载是针对一个类中的方法而言的;而重写则涉及到继承。其次,当你调用person对象的equals方法时,实际上调用的就是你重写过的。
sffx123 2012-05-31
  • 打赏
  • 举报
回复
看你传入的参数是什么类型了,如果是Person肯定调用的是你自己的,其他非Person子类,应该调用的就是Object的equals方法。
如果是重写的话,就是覆盖该方法,以后子类调用该方法都是自己的。
ITXUEXIZHE_01 2012-05-31
  • 打赏
  • 举报
回复
向你那样说 那java里面什么类型就都没有 只有一个object类 ?
小小X 2012-05-31
  • 打赏
  • 举报
回复
调用你自己写的那个!还有这种情况叫重写吧?!!
brightyq 2012-05-31
  • 打赏
  • 举报
回复
当然是你重起的

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧