2017-08-29 31 views
0

假設我們在打字稿聲明一個抽象類,如下所示:抽象類的子類有什麼約束?

export abstract class A { 

//my concrete method  
function add(x, y) { 
    return x + y; 
} 

//my abstract method 
abstract divide();  
} 

如果我們有一個延伸的一個子類B,什麼是B上的限制?更具體地說,我們知道B從A繼承,所以我們已經有了add()的具體方法,並且我們知道我們有一個帶有divide()的抽象方法方法,但是我們也可以在B中添加其他不是繼承的具體方法從A我可以B中定義POW()和如下沒有聲明其作爲A.東西的抽象方法:

export class B extends abstract class A { 

//my concrete method 
divide(){//implementation details go here}; 

//another concrete method? 
pow(){ 
    //insert imp details; 
} 

這個問題是由事實,我在重構在兩個屏幕上的代碼動機一個Angular 2/4應用程序,其中兩個ts組件共享大量相同的代碼。我想創建一個抽象類並將通用代碼推入抽象類並添加一些抽象方法。但是,在每個屏幕中,我沒有幾個方法完全獨立於彼此,所以我想知道沿着這些線重構代碼是好還是壞。謝謝!

回答

0

派生類可以覆蓋基類中的抽象或非抽象方法。他們也可以聲明他們自己的方法。它完全沒問題。

+0

很感謝!我只是想仔細檢查。 – jrDeveloper