C 物件導向繼承1和字串

2021-07-11 16:51:05 字數 2651 閱讀 1818

區別:

值型別和引用型別在記憶體上儲存的地方不一樣。

值型別的值是儲存在記憶體的棧當中。

引用型別的值是儲存在記憶體的堆中。

在傳遞值型別和傳遞引用型別的時候,傳遞的方式不一樣。

值型別我們稱之為值傳遞,引用型別我們稱之為引用傳遞。

常見的值型別:int、double、bool、char、decimal、struct、enum

常見的引用型別:string、自定義類、陣列、、、、、、

給一張圖幫助理解

引用型別的變數名存的是值所在堆記憶體的位址,而值型別是在棧記憶體中存的本身

我們可以講字串看做是char型別的乙個唯讀陣列。

//可以講string型別 看做是char型別的乙個唯讀陣列

string s = "abcdefg";

s = "bbcdefg";// s[0] = 'b';不能這樣做因為是唯讀的陣列

char chs = s.tochararray();//首先將字串轉換為char型別的陣列

chs[0] = 'b'; //將字元陣列轉換為我們的字串

s = new

string(chs);

console.writeline(s[0]);

console.writeline(s);

//從email中提取出使用者名稱和網域名稱

string email = "[email protected]";

int index = email.indexof('@');

string username = email.substring(0, index);

string ****** = email.substring(index+1);

console.writeline(******);

console.writeline(username);

我們可能會在一些類中,寫一些重複的成員,我們可以將這些重複的成員,單獨的封裝到乙個類中,作為這些類的父類。

子類繼承了父類,那麼子類從父類那裡繼承過來了什麼?

首先,子類繼承了父類的屬性和方法,但是子類並沒有繼承父類的私有字段。

子類並沒有繼承父類的建構函式,但是。子類會預設的呼叫父類無引數的建構函式,來建立父類物件,讓子類可以使用父類中的成員。所以,如果在父類中重新寫了乙個有引數的建構函式之後,那個無引數的就被乾掉了,子類就呼叫不到了,所以子類會報錯。

解決辦法:

在父類中重新寫乙個無引數的建構函式

在子類中顯示的呼叫父類的建構函式,讓子類別去呼叫無參的建構函式,使用關鍵字:base()

繼承的特性

繼承的單根性:乙個子類只能有乙個父類。

繼承的傳遞性

來個例子總結一下

//main方法中呼叫

static

void main(string args)

//父類

public

class person

set

}private

int _age;

public

int age

set

}private

char _gender;

public

char gender

set

}//父類建構函式

public

person(string name, int age, char gender)

}

//記者類

//:person繼承自person

public

class reporter : person

private

string _hobby;

public

string hobby

set

}public

void

reportersayhello()

,我是一名狗仔,我的愛好是,我是生,我今年歲了",this.name,this.hobby,this.gender,this.age);}}

//程式設計師類

public

class programmer : person

set

}public

void

programmersayhello()

,我是一名程式猿,我是生,我今年歲了,我的工作年限是年",this.name,this.gender,this.age,this.workyear);

}public

programmer(string name, int age, char gender, int workyear)

: base(name, age, gender)

}

c 物件導向系列1(繼承)

c 允許乙個類繼承其他類的屬性和方法,別繼承的類稱為父類,繼承的類稱為派生類或子類。子類不僅僅可以繼承基類的屬性和方法,還可以根據需要定義新的屬性和方法,增加新的功能,這樣可是使用者重用基類的 專注於子類的新 提高類的可重用性,繼承的好處是能共享 繼承後,父類的所有的字段和方法都將存在於子類中,每乙...

c 物件導向 繼承

三 繼承 1.繼承的型別 實現繼承和介面繼承 2 介面繼承 表示乙個型別只繼承函式的簽名,沒有繼承任何實現 在需要指定該型別具有某些可用的特性時,最好使用這種型別的繼承。2.多重繼承 c 不支援多重繼承,為簡化 的繁瑣,可以允許型別派生自多個介面 多重介面繼承。這說明c 可以派生自另乙個類和任意多個...

C 物件導向 繼承

一 通過繼承 inheritance 可以在建立新類時復用 擴充套件和重寫已在其它類中宣告的可訪問的例項成員 除建構函式和析構函式外 類完全支援繼承,可以繼承自類也可以實現介面,結構不支援繼承,只可以實現介面 繼承是通過派生 derivation 實現的,被繼承的類稱為基類 base class 繼...