gpt4 book ai didi

java - 抽象类具体方法调用

转载 作者:太空宇宙 更新时间:2023-11-04 15:03:41 25 4
gpt4 key购买 nike

我有一个名为 Animal 的抽象类。它有一个名为 sleep() 的具体方法。然后我通过扩展 Animals 类编写了另一个名为 WildAnimal 的类。它重写了抽象 Animal 类的 sleep()

我想将抽象类的具体方法调用到我的主方法中(未重写 WildAnimal 类的方法)。我知道抽象类无法实例化,但是是否可以调用抽象类具体方法()?如果是,如何?

检查下面的代码:

动物类(摘要):

 abstract class Animal {

public void sleeping(){
System.out.println("Animal Sleeping...!");
}
}

野生动物类:

 class WildAnimal extends Animal{

public void sleeping(){
System.out.println("WildAnimal Sleeping...!");
}
}

AbsMethodTest(测试类):

 public class AbsMethodTest {

public static void main(String[] args) {
Animal ani = new WildAnimal(); // This will print "WildAnimal Sleeping...!"
ani.sleeping(); // But i want to print "Animal Sleeping...!" is it possible ?
}
}

最佳答案

不,这是不可能的,除非您有一个不重写 sleeping()Animal 实现。就客户端代码而言,它不应该“知道”谁提供了 sleeping 方法的行为。从它的角度来看,它只是调用了 WildAnimal 特化的 sleeping 行为。它不能“希望”调用父类(super class)实现,因为它根本不应该“知道”它调用的行为是特定于子类的还是从父类(super class)继承的。

关于java - 抽象类具体方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22283816/

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