A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ggflxb 中级黑马   /  2014-7-9 15:21  /  1721 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  Student2
  2. {
  3.         String name;
  4.         int age;
  5.         boolean equals(Object obj)
  6.         {
  7.                 Student2 st = null;
  8.                 if(obj instanceof Student2)
  9.                         st = (Student2)obj;
  10.                 else
  11.                         return false;
  12.                 if(st.name==this.name&&st.age==this.age)
  13.                         return true;
  14.                 else
  15.                         return false;
  16.         }
  17.         public static void main(String[] args)
  18.         {
  19.                 Student2 p = new Student2();
  20.                 Student2 q = new Student2();
  21.                 p.name = "xyz";
  22.                 p.age = 13;
  23.                 q.name = "xyz";
  24.                 q.age = 13;
  25.                 if(p.equals(q))
  26.                         System.out.println("p与q相等");
  27.                 else
  28.                         System.out.println("p与q不等");
  29.         }
  30. }
复制代码


代码中用equals为什么会报错啊,而用equal就可以运行,求解?

6 个回复

倒序浏览
本帖最后由 Darkhorse′Xa 于 2014-7-9 15:29 编辑

注意:要想重写必须要跟父类的方法一模一样,Object类当中equal方法为:public boolean equals(Object obj),而你的访问修饰符是默认的,子类重写父类的方法访问修饰符权限必须大于或者等于,所以加个public就可以了.而equal是你自己定义的方法当然是可以运行的!跟equals方法是没有任何关系的

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
Darkhorse′Xa 发表于 2014-7-9 15:23
注意:要想重写必须要跟父类的方法一模一样,Object类当中equal方法为:public boolean equals(Object obj),而 ...

恩,谢谢,懂了
回复 使用道具 举报
Object中的equals方法
public boolean equals(Object obj)
你的equals方法
boolean equals(Object obj)

覆盖父类方法必须使用大于父类方法的权限修饰符,默认(default)权限小于public权限,所以报错.
回复 使用道具 举报
权限不够
回复 使用道具 举报
嘻嘻嘻嘻嘻
回复 使用道具 举报
郑飞 高级黑马 2014-7-10 08:21:37
7#
有老师说过重写一定直接复制API的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马