區別:
值型別和引用型別在記憶體上儲存的地方不一樣。
值型別的值是儲存在記憶體的棧當中。
引用型別的值是儲存在記憶體的堆中。
在傳遞值型別和傳遞引用型別的時候,傳遞的方式不一樣。
值型別我們稱之為值傳遞,引用型別我們稱之為引用傳遞。
常見的值型別: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 繼...