2017-09-25 72 views
3
class Parent 
{ 
    def m1() 
    { 
     System.out.println("m1 method"); 
    } 
} 

abstract class Child extends Parent 
{ 
    def m1() 
} 

上面的代碼編譯成功地,我的問題是:爲什麼父類允許Child類在Child類中將父類的方法設置爲抽象類?

爲什麼Parent類允許Child類,使m1()方法,抽象方法?

我們在哪裏使用這種場景?

+0

讓抽象類擴展一個具體類很奇怪。這是可能做到的其中一種情況,但你可能不應該這樣做。 – puhlen

回答

1

現在,它可以發生,你想創建父類的多個變體。現在,父類是一個具體的類,它很難實現這一點。因爲您可以嘗試將父項作爲抽象,然後提供實現。但是如果在你的大代碼庫的幾個地方使用了具體的類,那麼你別無選擇,只能按照以下步驟行事。

因此,策略是創建抽象子不言而喻如下

abstract class Child extends Parent 
{ 
    def m1() 
} 

class SpecialChild extends Child { 
    //.. some implementation of m1 
} 

現在我們仍然可以使用原來的孩子

child = new SpecialChild(); 

希望這是有道理的。

相關問題