Iva*_*pul 5 java comparison object object-comparison
我有一个动物园的计划,在动物园里有分支的亚群动物是爬行动物.当我做一个equals方法时,主程序编译并运行.我很困惑,如果我比较对象而不是特定的int或String,java知道如何使用equals方法?
public class Zoo {
public static void main(String[]args) {
Animal a=new Animal("Bob");
Reptile komodo= new Reptile("Snakey");
komodo.bask();
a.size=3;
komodo.size=5;
System.out.println(a);
System.out.println(komodo);
Turtle t= new Turtle("Slowy");
t.hide();
t.size=6;
t.numlegs=4;
System.out.println(t);
System.out.println(t.equals(komodo));
}
}
public class Animal {
public String name;
public boolean equals(Animal other) {
return other.size==this.size;
}
public Animal(String s) {
name=s;
}
public void setName(String n) {
this.name=n;
}
public void eat(String meal) {
System.out.println("chump chump yummy "+meal);
}
public int size;
public String toString() {
return "I am "+name+" and I'm "+size+" cm long";
}
}
public class Reptile extends Animal {
public Reptile(String n) {
super(n);
numlegs=0;
}
public Reptile(String n, int l) {
super(n);
numlegs=l;
}
public void bask() {
System.out.println("basking...");
}
public String toString() {
return super.toString()+numlegs+" legs";
}
public int numlegs;
}
public class Turtle extends Reptile {
public Turtle(String n) {
super (n,4);
shellColor="Brown";
}
public void hide() {
System.out.println("you cant see me");
}
public String toString() {
return super.toString()+" and my shell is"+ shellColor;
}
public String shellColor;
public void bask() {
super.bask();
System.out.println("turtle is basking...");
}
}
Run Code Online (Sandbox Code Playgroud)
Lui*_*oza 11
您没有覆盖该Object#equals
方法,但重载它.在方法声明中,您使用Animal
type而不是Object
:
public boolean equals(Animal other)
Run Code Online (Sandbox Code Playgroud)
该方法的一个很好的优先选择是使用instanceof
运算符.显示一个例子:
@Override
public boolean equals(Object other) {
if(other instanceof Animal) {
Animal otherAnimal = (Animal)other;
//comparison logic...
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
有关该主题的更多信息: