package exercise;
public class Student {
String name;
int age;
boolean equals(Object obj){
    Student stu=null;
    if(obj instanceof Student)
        stu=(Student)obj;
    else
        return false;
    
    if(stu.name==this.name && stu.age==this.age)
        return true;
    else
        return false;
}
    public static void main(String[] args) {
        Student p=new Student();
        Student q=new Student();
        p.name="xyz";
        p.age=12;
        q.name="xyz";
        q.age=12;
        
        if(p.equals(q))
            System.out.println("p equal q");
        else
            System.out.println("p no equal q");
    }}

解决方案 »

  1.   

    public boolean equals(Object obj)
    就可以了。
      

  2.   

    @Override
    public boolean equals(Object arg0) {
    // TODO Auto-generated method stub
    return super.equals(arg0);
    }把这个换成你里面的就行了..必须是public  因为 object 里面是 public 的.
      

  3.   

    提倡用@override注解在初学阶段还是不大懂啊感觉没什么意义啊
      

  4.   

    当覆盖的时候访问修饰符是原来的或者权限比原来的高,public boolean equals(Object obj),在前面加上public
      

  5.   

    对,重写的方法的权限不能小于父类方法的权限,最好为public。而且1.5版本的最好+个@Override辅助检测重写的方法。
      

  6.   

    你boolean equals(Object obj){ 前面没有加访问修饰符public,之所以要加public是因为你现在是在复写equals,而当复写一个方法的时候,它的访问修饰权限不能低于子类中的访问修饰权限,而你没有写访问修饰权限,它会默认成default,而子类中的那个 equals的访问权限是public,default比public的权限低,所以出现错误了