祖先的 equals是public的,你在子类中想要覆盖祖先的方法是
不能比祖先的访问权限低。你不能在子类中把equals定义为 默认级别(package级)boolean equals(Object obj)

解决方案 »

  1.   

    java.lang.Object 中的equals() 方法是public ,所以你重写的时候也必须是public.因为重写方法的访问权限必须等于或宽于父类的.
      

  2.   

    boolean equals(Object obj)
    应该写成
    public boolean equals(Object obj)
      

  3.   

    public boolean equals(Object obj){
      return (obj instanceof Student) && ((this.name==((Student)obj).name)?true:(this.age==((Student)obj).age?true:false));
    }
      

  4.   

    st.name==this.name上面的问题改了,这块要注意
    要不不会返回你想象的值的
      

  5.   

    1、应该为public
    2、比较方式不对!譬如name应该用equals方法比较;
      

  6.   

    在equals()中,对象的比较用equals,基本型别用==。
    此外,建议将equals稍做修改,否则如果有类继承自该Student,将不会得到楼主想要的结果。
    比如:
    class Student
    {
    String name;
        int age;
        public boolean equals(Object obj) {
            Student st=null;
            if(obj instanceof Student)
                st = (Student)obj;
            else
                return false;
                if(st.name.equals(this.name) && st.age==this.age)
                   return true;
                else
                   return false;
        }
        
    public static void main(String[] args) {  
    Student p=new Student();
    Student q=new Student();
    p.name=new String("xyz");
    p.age=13;
    q.name=new String("xyz");
    q.age=13;
    if(p.equals(q))
      System.out.println("p 与 q 相等");
    else
      System.out.println("p 与 q 不等");        Student g = new Graduate("xyz", 13);
            System.out.println("q.eauls(g) :" + q.equals(g));
    }
    }class Graduate extends Student {  //大学生类
        private String major = "";
        Graduate(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public boolean equals(Object obj) {
            if (!super.equals(obj)) return false;
            Graduate g = (Graduate)obj;
            return major.equals(g.major);
        }
    }结果:
    p 与 q 相等
    q.eauls(g) :true  //这里应该是false才对修改Student的equals()如下即可:
    public boolean equals(Object obj) {
            if (this == obj) return true;
            if (obj == null) return false;
            if(getClass()!= obj.getClass()) return false;
            Student s = (Student)obj;
            return name.equals(s.name) && age == s.age;
    }
      

  7.   

    if the st.name is null, what will happen in your equals method? hehe