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

问题描述 投票:0回答:1

我有三堂课:

父母

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;
        }
    }
}

[基本上,我只想使用ChildMiddleChild的共同属性(即Parent中定义的属性)进行比较。例如,如果我创建一个Parent为7的对象,并创建一个具有相同parentValue的parentValue(或Child)对象,如下面的代码片段所示,则MiddleChild的计算结果为true。我想以某种方式从parent.equals(child)类调用equals对象的Parent函数。这有可能吗?我了解为什么下面的代码显示“失败”;是否有另一种方法可以访问Child函数以比较Parent.equalschild?显然,middle对象没有用,因为我试图比较superChild外部某个函数的两个对象。

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(...

java polymorphism parent-child equals
1个回答
0
投票

此想法似乎无法以这种方式使用equals()。您确实应该在Parent中创建一个名为getParentValue()的方法。然后,您可以使用Parent = Middle failure

© www.soinside.com 2019 - 2024. All rights reserved.