物件繼承訓練 2 繼承後可以呼叫父類方法

2021-07-26 18:42:27 字數 2248 閱讀 2946

上節課(我們做了乙個js的簡單的繼承。

上節課我們的簡單的『繼承』

父類

//基類

var basenews = function

() ;

}

父類有用乙個display方法。

然後我們在functionprototype上定義了乙個名為extends的方法,此方法用來實現所謂的繼承。

//給function進行擴充套件

function.prototype.extends = function

(classname)

子類sportsnews

var sportsnews = function

()

注意:此時sportsnews還不是basenews的子類,還沒有繼承父類basenews

下面**來實現所謂的繼承:

//擴充套件sportsnews,實現所謂的繼承

sportsnews.extends(basenews);

因為我們給function的原型上新增了extends方法,sportsnews也是function,所以可以呼叫extends方法,然後傳入basenews類,就實現了繼承basenews類。

我們例項化sportsnews後,發現該類也有了父類basenews的display方法

//例項化

var sn = new sportsnews();

sn.display(); //發現確實存在這個方法

如果我們的子類sportsnews類,也有乙個display方法

var sportsnews = function

() ;

}

那麼例項化sportsnews類後呼叫display放就是自己的,而不是父類basenews的。

var sn = new sportsnews();

sn.display(); //彈出:'體育新聞'

實現我們今天的需求

//給function進行擴充套件

function.prototype.extends = function

(classname)

注意:我們在extends方法中給this(例項化後的物件,比如sn)原型(prototype)上新增的乙個屬性father,這個father就是extends()傳入的類的例項化物件(也就是父類new出來的物件)。

所以,在子類sportsnews呼叫extends()繼承了父類basenews後,子類例項化後的物件就有了father,也就有了父類中的方法。

//擴充套件sportsnews,實現所謂的繼承

sportsnews.extends(basenews);

//例項化

var sn = new sportsnews();

sn.father.display(); //彈出:'新聞基類'

到這裡,其實我們已經實現了繼承後的子類可以呼叫父類的方法了。

但是,還有乙個小問題,比如

//基類

var basenews = function

() ;

}

在子類物件呼叫父類的方法的時候,alert('父類例項化')會執行2次,相當於初始化了2次父類。我們要稍作修改:

//基類

var basenews = function

bb()

this.display = function

();}

這樣alert('父類例項化');只會執行一次了。

python繼承父類的呼叫

python中的乙個派生類整合多個基類時候。例項化派生類物件後呼叫方法。如下 class baserequest pass class requesthandler baserequest def process request self print requesthandler.process r...

關於子類繼承父類後呼叫方法的問題

1,看下面一段 class parentclass class childrenclass extends parentclass public class testclass 輸出結果是 i am a attribute in parentclass.i am a attribute in par...

關於子類繼承父類後呼叫方法的問題

1,看下面一段 class parentclass class childrenclass extends parentclass public class testclass 輸出結果是 i am a attribute in parentclass.i am a attribute in par...