public boolean isAfraidOf(Animal animal) {
//Compare the class of this animal to Bird
if (animal.getClass() == Bird.class) {
return false;
} else {
return true;
}
Animal是超类,Bird是子类,我需要知道他们比较两个类的区别?并提前致谢
答案 0 :(得分:0)
getClass()
返回Class
。因此animal.getClass()
将返回Animal类型,并且比较将返回false
。
所以这是一个全面的研究,供您理解:
Animal animal = new Animal();
Bird bird = new Bird();
Animal birdAnimal = new Bird();
if (animal.getClass() == bird.getClass()){
System.out.println("Bird equals to animal");
}else{
System.out.println("Bird not equals to animal");
}
if (birdAnimal.getClass() == animal.getClass()){
System.out.println("BirdAnimal equals to animal");
}else {
System.out.println("BirdAnimal not equals to animal");
}
if (animal.getClass() == Animal.class){
System.out.println("animal equals to Animal");
}else{
System.out.println("animal not equals to Animal");
}
if (animal.getClass() == Bird.class){
System.out.println("animal equals to Bird");
}else{
System.out.println("animal not equals to Bird");
}
这是输出:
Bird not equals to animal
BirdAnimal not equals to animal
animal equals to Animal
animal not equals to Bird
答案 1 :(得分:0)
如果我正确理解您的问题,您需要确定Animal
是否属于类型Bird
。最简单的方法是使用instanceof
示例:
if (animal instanceof Bird) {
return false;
} else {
return true;
}
有另一种方法可以做这种事情。在Java中,默认情况下所有类都扩展Object
。这意味着它们带有内置的.equals()
方法。但是,如果您创建了Animal和Bird类,则.equals()
方法很可能不够。创建新类时,应覆盖.equals()
方法,以完全按照您希望的方式比较对象。例如,如果所有动物都有体重,您可能想要比较它。或不。也许您只想根据另一个属性确定相等性。