繼承: 子類繼承父類上的屬性和方法(目的是讓子類的例項享有父類的屬性和方法)
為什麼要繼承?
步驟(套路):
定義父型別建構函式
給父型別的原型新增方法
定義子型別的建構函式
繼承父型別:子型別的原型為父型別的乙個例項物件(關鍵)
讓子型別的原型的constructor指向子型別
給子型別的原型新增方法
建立子型別的物件: 可以呼叫父型別的方法
// 定義父型別建構函式
function
supper()
// 給父型別的原型新增方法
supper.prototype.
showsupperprop
=function()
;// 定義子型別的建構函式
function
sub(
)// 繼承父型別:子型別的原型為父型別的乙個例項物件(關鍵)
sub.prototype =
newsupper()
;// 將子型別原型的構造屬性設定為子型別 讓子型別的原型的constructor指向子型別
sub.prototype.constructor = sub;
// 給子型別的原型新增方法
sub.prototype.
showsubprop
=function()
;let sub =
newsub()
;sub.
showsubprop()
;sub.
showsupperprop()
;// 例項的constructor訪問對應的建構函式
console.
log(sub.constructor)
;
特點:
關鍵:在子型別建構函式中通用call()呼叫父型別建構函式
步驟(套路):
// 定義父型別建構函式
function
person
(name, age)
// 定義子型別建構函式
function
student
(name, age, price)
let s =
newstudent
('tom',12
,1300);
console.
log(s instanceof
person);
console.
log(s instanceof
student);
console.
log(s)
;
特點:
function
supertype
(name)
supertype.prototype.
sayname
=function()
;function
subtype
(name, job)
// 繼承方法
subtype.prototype =
newsupertype()
;// 因重寫原型而失去constructor屬性,所以要對constructor重新賦值
subtype.prototype.constructor = supertype;
subtype.prototype.
sayjob
=function()
;var instance1 =
newsubtype
('jiang'
,'student');
instance1.colors.
push
('black');
console.
log(instance1.colors)
;//["red", "blue", "green", "black"]
instance1.
sayname()
;// 'jiang'
instance1.
sayjob()
;// 'student'
var instance2 =
newsubtype
('j'
,'doctor');
console.
log(instance2.colors)
;// //["red", "blue", "green"]
instance2.
sayname()
;// 'j'
instance2.
sayjob()
;// 'doctor'
即通過借用建構函式來繼承屬性,通過原型鏈的方式來繼承方法
function
person
(name, age, ***)
person.prototype.
get***
=function()
;function
student
(name, age, ***, _class)
// object.creat(obj): 建立乙個空物件 讓空物件的__proto__指向obj
student.prototype = object.
create
(person.prototype)
;student.prototype.constructor = student;
student.prototype.
getclass
=function()
;
class
person
getx()
}// student.prototype.__proto__ = person.prototype
class
student
extends
person
gety()
}
python 類 封裝 繼承 多型
類由一系列函式物件組成,在類中,函式物件稱為方法,方法的第乙個引數必須為self,表示當前例項物件 可把類理解為乙個dict,key為方法名 string型別 value為方法 class animal object def init self,age,color self.age age self...
C實現類封裝 繼承 多型
1 概述 c語言是一種面向過程的程式語言,而c 是在c語言基礎上衍生來了的物件導向的語言,實際上,很多c 實現的底層是用c語言實現的,如在visual c 中的inte ce其實就是struct,查詢inte ce的定義,你可以發現有這樣的巨集定義 ifndef inte ce define int...
python類封裝,繼承與多型
將類的函式偽裝成物件的屬性,使用該裝飾器裝飾的類的方法 可用物件名.方法名呼叫。此時不用加括號 此時的learn方法是用的類屬性的呼叫方式進行呼叫 類的繼承方式,在類名的括號中加入要繼承類的類名,當要繼承多個類時,用逗號隔開。利用類的內建屬性 bases 可以檢視當前類繼承了哪些類 在物件呼叫方法時...