js物件導向系列六之繼承多型

2021-08-30 13:46:51 字數 1672 閱讀 5411

關於繼承,我們已經知道,子類能夠完全繼承父類的屬性和方法

當然我們也可以在子類繼承父類後進行改寫相應的屬性或新增相應的屬性

function inherit(o) 

f.prototype = o

return new f()

}function inheritfs(father,son)

//父類

function father(name,***)

}father.prototype.study = function (x)

function son(name,***)

this.eat = function(food)

this.list = ["李栓但","趙科爽"]

}inheritfs(father,son)

var chlid1 = new son("趙科爽","女")

var chlid2 = new son("李栓但","男")

console.log(chlid1)

chlid1.eat('飯')

console.log(chlid2)

chlid2.eat('饅頭')

可以看到子類完全的繼承了父類並且也進行了對父類相應的屬性進行更改,以及增加父類沒有的屬性,這就是多型的乙個體現

這種寫法child1,和child2之間並無太大區別,如果想讓child1,和child2出現不同的狀態才算是多型

function inherit(o) 

f.prototype = o

return new f()

}function inheritfs(father,son)

//父類

function father(name,***)

}father.prototype.study = function (x)

function son1 (name,***)

} function son2 (name,***)

} inheritfs(father,son1)

inheritfs(father,son2)

var child1 =new son1("李栓但","男")

var child2 =new son2("王花花","女")

console.log(child1)

child1.eat()

child1.beat()

child1.study("七歲上學")

console.log(child2)

child2.eat()

child2.cry()

child2.study("八歲上學")

改寫**後

發現child1和child2既有相同的方法eat和屬性list,也有不同的方法cry和beat,這就呈現出繼承多型了

封裝保證繼承,繼承保證**復用,多型保證可擴充套件性和可維護性

以上就是封裝-繼承-多型的全部了

接下來是物件導向和面向過程的**實踐

js物件導向之繼承

原型鏈繼承 用法 把例項的父類給子函式的原型 缺點 1 因為修改了obj1.arr後obj2.arr也變了,因為來自原型物件的引用屬性裡所有例項共享的 2 建立子類例項時,無法向父類建構函式傳遞引數 1 function parent 78 function child age 1314 child...

JAVA學習 物件導向之繼承 多型

這週六我們學習了物件導向的一些知識,包含繼承和多型的。以下是我學過後的心得總結 即將構造方法,成員變數,成員方法封裝在一起,形成乙個類class檔案,實現呼叫。現在我們來看乙個 它結合了繼承的運用,同時體現了super和this的區別。從上面的結果看出來子類 zi 繼承了父類 fu test方法最後...

python 物件導向 繼承 多型

概念理解 類似於祖輩留下的遺產,父輩可以使用,父輩留下的東西,子輩可以使用,這就是繼承。例如 建立乙個動物類,貓也是乙個動物,所以貓也具有動物的屬性 class animal 定義乙個動物類 def eat self print 吃飯 def drink self print 喝水 貓也是乙個動物,...