为了账号安全,请及时绑定邮箱和手机立即绑定

怎么比较两个不同子类的值是否相等?

package com.imooc;

public class Animal {
    public String name;
    public int age;

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Animal other = (Animal) obj;
        if (age != other.age)
            return false;
        return true;
    }
}
package com.imooc;

public class Dog extends Animal {

}
package com.imooc;

public class Cat extends Animal {

}
package com.imooc;

public class Initial {
    public static void main(String[] args) {

        Dog dog = new Dog();
        Dog dog2=new Dog();
        Cat cat = new Cat();
        dog.age=1;
        dog2.age=1;
        cat.age=1;

        if(dog.equals(dog2)){
            System.out.println("dog和dog2的age相同");
        }else{
            System.out.println("dog和dog2的age不同");
        }

        if(dog.equals(cat)){
            System.out.println("dog和cat的age相同");
        }else{
            System.out.println("dog和cat的age不同");
        }
    }
}

结果为dog和dog2的age相同,dog和cat的age不同

为什么new同一个子类时,equals可以比较属性值,而new不同子类时,不能比较属性值,怎么修改才能比较不同子类的属性值

谢谢


正在回答

11 回答

package com.imooc;

public class Animal {
    public String name;
    public int age;
}
package com.imooc;

public class Dog extends Animal {
    String name="狗";
    int age=1;
}
package com.imooc;

public class Cat extends Animal {
    String name="狗";
    int age=2;
}
package com.imooc;
import java.util.Scanner;

public class Initial {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入动物名");
        String choose1=input.next();
        Animal[] animal={new Dog(),new Cat()};
        for(int i=0;i<animal.length;i++){
            if(choose1==animal[i].name){
            System.out.println("已找到"+choose1);
            }else if(i==animal.length-1){
                System.out.println("未找到"+choose1);
            }
        }
        System.out.println("\n请输入1或2");
        int choose2=input.nextInt();
        for(int n=0;n<animal.length;n++){
            if(choose2==animal[n].age){
            System.out.println("已找到"+choose2);
            }else if(n==animal.length-1){
                System.out.println("未找到"+choose2);
            }
        }
        input.close();
    }
}


0 回复 有任何疑惑可以回复我~
#1

qq_文_17

回复了~
2016-04-08 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消

怎么比较两个不同子类的值是否相等?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号