对派生类对象(Java)调用父类函数

对派生类对象(Java)调用父类函数,java,polymorphism,parent-child,equals,Java,Polymorphism,Parent Child,Equals,我有三门课: 家长 公共类父类{ 保护值; 公共父级(int parentValue){ this.parentValue=parentValue; } 公共布尔等于(对象obj){ if(父对象的obj实例){ return((Parent)obj).parentValue==parentValue; }否则{ 返回false; } } } 儿童 公共类子级扩展父级{ 受保护的儿童价值观; 公共子对象(int parentValue,int childValue){ super(parent

我有三门课:

家长

公共类父类{
保护值;
公共父级(int parentValue){
this.parentValue=parentValue;
}
公共布尔等于(对象obj){
if(父对象的obj实例){
return((Parent)obj).parentValue==parentValue;
}否则{
返回false;
}
}
}
儿童

公共类子级扩展父级{
受保护的儿童价值观;
公共子对象(int parentValue,int childValue){
super(parentValue);
this.childValue=childValue;
}
公共布尔等于(对象obj){
if(子对象的obj实例){
Child=(Child)obj;
返回child.childValue==childValue&&
child.parentValue==parentValue;
}否则{
返回false;
}
}
}
中孩子

公共类中间子级扩展父级{
公共中间子女(int parentValue){
super(parentValue);
}
公共布尔等于(对象obj){
if(中间孩子的obj实例){
return((MiddleChild)obj).parentValue==parentValue;
}否则{
返回false;
}
}
}
基本上,我只想使用
子级
中间级
的公共属性(即
父级
中定义的属性)来比较它们。例如,如果我创建一个
Parent
值为7的
Parent
对象和一个具有相同parentValue的
Child
(或
MiddleChild
)对象,如下面的代码段所示,
Parent.equals(Child)
的计算结果为true。我想从
Child
类调用
Parent
对象的
equals
函数。这可能吗?我理解为什么下面的代码显示“失败”;是否有另一种方法来访问比较
子项和
中间项的
Parent.equals
函数?显然,
super
对象没有用,因为我试图比较
Child
MiddleChild
外部函数中的两个对象

publicstaticvoidmain(字符串[]args){
父母=新父母(7);
儿童=新生儿童(7,3);
中间孩子中间=新中间孩子(7);
if(父级相等(中间)){
System.out.println(“父项=中间项”);
}
if(((父)子).equals(中)){
System.out.println(“成功!”);
}否则{
系统输出打印项次(“失败”);
}
}
此代码段的输出为

Parent = Middle
failure

以这种方式使用equals()似乎是一种糟糕的设计。您应该在父级中创建一个名为getParentValue()的方法。然后使用
if(child.getParenvValue()==middle.getParentValue())

进行比较当然,如果类像本演示一样简单,这将是一个有用的解决方案。但实际上,我想比较的类更复杂。此外,如果我可以调用像
equals
这样的函数,而不必到处更新比较列表,那么比较就更容易“证明未来”。然后equals()方法应该检查obj是否是父对象的实例。