類的封裝繼承多型

2021-10-08 23:43:28 字數 3051 閱讀 1616

繼承: 子類繼承父類上的屬性和方法(目的是讓子類的例項享有父類的屬性和方法)

為什麼要繼承?

步驟(套路):

定義父型別建構函式

給父型別的原型新增方法

定義子型別的建構函式

繼承父型別:子型別的原型為父型別的乙個例項物件(關鍵)

讓子型別的原型的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 可以檢視當前類繼承了哪些類 在物件呼叫方法時...