上節課(我們做了乙個js的簡單的繼承。
上節課我們的簡單的『繼承』
父類
:
//基類
var basenews = function
() ;
}
父類有用乙個display
方法。
然後我們在function
的prototype
上定義了乙個名為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...