我有三堂课:
父母
public class Parent {
protected int parentValue;
public Parent(int parentValue){
this.parentValue = parentValue;
}
public boolean equals(Object obj){
if(obj instanceof Parent){
return ((Parent) obj).parentValue == parentValue;
}else{
return false;
}
}
}
Child
public class Child extends Parent{
protected int childValue;
public Child(int parentValue, int childValue){
super(parentValue);
this.childValue = childValue;
}
public boolean equals(Object obj){
if(obj instanceof Child){
Child child = (Child) obj;
return child.childValue == childValue &&
child.parentValue == parentValue;
}else{
return false;
}
}
}
MiddleChild
public class MiddleChild extends Parent{
public MiddleChild(int parentValue){
super(parentValue);
}
public boolean equals(Object obj){
if(obj instanceof MiddleChild){
return ((MiddleChild) obj).parentValue == parentValue;
}else{
return false;
}
}
}
[基本上,我只想使用Child
和MiddleChild
的共同属性(即Parent
中定义的属性)进行比较。例如,如果我创建一个Parent
为7的对象,并创建一个具有相同parentValue的parentValue
(或Child
)对象,如下面的代码片段所示,则MiddleChild
的计算结果为true。我想以某种方式从parent.equals(child)
类调用equals
对象的Parent
函数。这有可能吗?我了解为什么下面的代码显示“失败”;是否有另一种方法可以访问Child
函数以比较Parent.equals
和child
?显然,middle
对象没有用,因为我试图比较super
和Child
外部某个函数的两个对象。
MiddleChild
此代码段的输出是
public static void main(String[] args){
Parent parent = new Parent(7);
Child child = new Child(7, 3);
MiddleChild middle = new MiddleChild(7);
if(parent.equals(middle)){
System.out.println("Parent = Middle");
}
if(((Parent) child).equals(middle)){
System.out.println("success!");
}else{
System.out.println("failure");
}
}
我有三个类:父类公共类Parent {protected int parentValue; public Parent(int parentValue){this.parentValue = parentValue; } public boolean equals(...
此想法似乎无法以这种方式使用equals()。您确实应该在Parent中创建一个名为getParentValue()的方法。然后,您可以使用Parent = Middle
failure