gpt4 book ai didi

Java 父类(super class)调用子类中创建的方法

转载 作者:行者123 更新时间:2023-12-01 09:50:09 25 4
gpt4 key购买 nike

我有一个关于继承和绑定(bind)的问题。

如果我在子类中创建一个新方法,并尝试使用父类(super class)引用调用它会怎样?

我知道它会首先检查类型,然后检查对象。所以根据规则这是行不通的,因为这个方法没有在父类(super class)中声明。

但是就没有办法克服吗?

我的意思是,继承意味着您必须在父类(super class)中声明每个方法,并且如果您想更改子类的某些内容,则只能覆盖它?因此,如果我突然意识到,我的一个子类确实需要一种特殊方法,或者需要重载,那么我是否必须首先在父类(super class)中声明它,或者根本忘记它?

最佳答案

So if suddenly I realise, that one of my subclasses does needs a special method, or needs an overloading, then I eather forced to declare it in superclass first or forget about it at all?

还有第三种选择。在子类中声明该方法。在需要调用该方法的代码中,将引用强制转换为子类类型。如果引用并未真正指向该子类的对象,您将得到 ClassCastException。

如果您最终不得不做这类事情,您应该在下一次重构过程中再次查看它,看看是否可以平滑它。

public class Test {
public static void main(String[] args) {
System.out.println(new Test().toString());
Test sub = new TestSub();
System.out.println(sub.toString());
((TestSub)sub).specialMethod();
}

@Override
public String toString(){
return "I'm a Test";
}
}

class TestSub extends Test {
void specialMethod() {
System.out.println("I'm a TestSub");
}
}

关于Java 父类(super class)调用子类中创建的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37647088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com