基類的:
把這幾個類中重複的內容提取出父類,重複的成員(字段,方法),我們可以抽取重複的成員,單獨的封裝到這個類中,這些類繼承這個父類,這個類就是父類也叫這幾個類基類,這些類稱為派生類(子類)。
子類可以從父類中繼承什麼?
1public
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結論:子類從父類中繼承了public,protected 修飾的成員,不能繼承private修飾的成員static
void main(string
args)
2
子類有沒有繼承父類的建構函式?
不會繼承父類建構函式。
通過端點方法,f11檢視建立建立物件的過程。
student s = new student(); 先執行父類建構函式,執行父類建構函式,給父類在堆中建立父類物件,
子類會預設呼叫父類的無引數建構函式,初始化資料,所以父類一定要有無引數建構函式。
注意:缺省會有無引數建構函式,如果有無引數建構函式,就沒有無引數建構函式,如果父類中沒有無引數建構函式怎麼解決?
1.給父類中手寫乙個無引數構造(子類建立物件預設呼叫)
2. 通常會用base()關鍵字顯式呼叫父類的有引數構造方法
1tip: 可以通過右鍵類指令碼,檢視類圖,檢視各個類之間的關係。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
繼承的特點:
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...