[英]Abstract class concrete method invokation
我有一個叫做Animal的抽象類。 它有一個稱為sleeping()的具體方法。 然后,我通過extended Animals類編寫了另一個名為WildAnimal的類。 覆蓋了抽象動物類的sleeping()
我想將抽象類的具體方法調用到我的主要方法中(WildAnimal類的未重寫方法)。 我知道不能實例化Abstract類,但是可以調用Abstract類的具體method()嗎? 如果是,如何?
檢查以下代碼:
動物類(抽象):
abstract class Animal {
public void sleeping(){
System.out.println("Animal Sleeping...!");
}
}
WildAnimal類:
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
行為。 它不能“希望”要調用的超類實現,因為它根本不應該“知道”其調用的行為是特定於子類或從超類繼承的。
您必須做:
class WildAnimal extends Animal{
public void sleeping(){
// System.out.println("WildAnimal Sleeping...");
super.sleeping();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.