C 基礎 繼承以及關鍵字new(二十一)

2022-09-03 06:21:10 字數 2697 閱讀 9582

基類的:

把這幾個類中重複的內容提取出父類,重複的成員(字段,方法),我們可以抽取重複的成員,單獨的封裝到這個類中,這些類繼承這個父類,這個類就是父類也叫這幾個類基類,這些類稱為派生類(子類)。

子類可以從父類中繼承什麼?

1

public

class

person28

9public person(string name, int age, char

gender)

1016

1718 ~person()

1922

2324

private

string

_name;

25public

string

name

2628

set2932}

3334

3536

private

int_age;

3738

public

intage

3941

set 42}

4344

private

char

_gender;

4546

public

char

gender

4749

set 50}

5152

5354

public

void

eat()

5558

5960}61

6263

64public

class

student:person

6570 ~student()

7174

7576

77private

int_id;

7879

public

intid

8082

set 83}

84 }

1

static

void main(string

args)

2

結論:子類從父類中繼承了public,protected 修飾的成員,不能繼承private修飾的成員

子類有沒有繼承父類的建構函式?

不會繼承父類建構函式。

通過端點方法,f11檢視建立建立物件的過程。

student s = new student(); 先執行父類建構函式,執行父類建構函式,給父類在堆中建立父類物件,

子類會預設呼叫父類的無引數建構函式,初始化資料,所以父類一定要有無引數建構函式。

注意:缺省會有無引數建構函式,如果有無引數建構函式,就沒有無引數建構函式,如果父類中沒有無引數建構函式怎麼解決?

1.給父類中手寫乙個無引數構造(子類建立物件預設呼叫)

2. 通常會用base()關鍵字顯式呼叫父類的有引數構造方法

1

public

class

person28

9public person(string name, int age, char

gender)

1016}17

18public student(string name,int age, char gender, int

id):

19base(name,age,gender) //

呼叫父類的有引數構造

20

tip: 可以通過右鍵類指令碼,檢視類圖,檢視各個類之間的關係。

繼承的特點:

1.單繼承,也叫單根性。就是只能繼承乙個父類

2.傳遞性。可以連續繼承

student類 繼承 man類, man類繼承 person類這樣可以一直繼承下去。

那麼子類student類中就同時有了man,person中繼承到的protected,public修飾的成員

如果子類中有父類中相同的方法怎麼解決,怎麼呼叫?

子類有和父類同名的成員,子類物件呼叫,優先呼叫子類自己的成員。

加上new就可以了:那麼new的作用是什麼呢?

關鍵字 new 做修飾符:作用:隱藏從父類繼承過來的同名的成員 ,隱藏的結果就是子類呼叫不到父類對應的成員。

使用: 如果子類成員中有和父類相同的成員,會提示警告,子類隱藏了父類的成員,需要加上關鍵字new

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...

C 關鍵字new學習

很多新手對c 關鍵字new可能不是很了解吧,今天我一起來學習一下。new 是c 的乙個關鍵字,同時也是操作符。關於new的話題非常多,因為它確實比較複雜,也非常神秘,下面我將把我了解到的與new有關的內容做乙個總結。new的過程 當我們使用關鍵字new在堆上動態建立乙個物件時,它實際上做了三件事 獲...

手寫 new 關鍵字

function mynew func,args 新物件原型指向建構函式原型物件 obj.proto func.prototype 將建構函式的this指向新物件 let result func.obj,args 根據返回值判斷 return result instanceof object res...