文章出處
文章列表
base關鍵字 專門用來在子類訪問父類成員
base.標識符:“.”調用父類同名屬性、同名函數、構造函數
1 (1)父類person 2 public class Person 3 { 4 public Person() 5 { 6 Console.WriteLine("Person()"); 7 } 8 9 public Person(string name, int age) 10 { 11 Console.WriteLine("Person(string name, int age)"); 12 this.name = name; 13 this.age = age; 14 } 15 16 protected string name; 17 protected int age; 18 protected string strWords = string.Empty; 19 20 public void SayHi() 21 { 22 Console.WriteLine("大家好,我叫{0},我今年{1}歲了{2}", name, age, strWords); 23 } 24 25 (2)子類student 26 public class Student:Person 27 { 28 //子類構造函數會自動調用父類無參構造函數 29 public Student(string name, int age) 30 { 31 this.strWords = strWords; 32 } 33 //子類構造函數可以顯示的調用父類構造函數 34 public Student(string name, int age, string strWord) 35 : base(name, age)//顯示的調用 父類構造函數 36 { 37 this.strWords = strWords; 38 } 39 } 40 41 (3)子類teacher 42 public class Teacher:Person 43 { 44 double salary; 45 46 public Teacher(string name, int age, string strWord) 47 { 48 base.name = name; 49 base.age = age; 50 base.strWords = strWords; 51 //base.name //base 只能訪問到父類的非私有成員 52 //this.salary//this可以訪問到子類的所有成員和父類的非私有成員 53 }
a)base
調用父類中非私有的成員(調用成員,父類)base點不出子類獨有成員。
調用父類中的構造函數(調用構造函數,父類)
當調用從父類中繼承過來的成員的時候,如果子類沒有重寫則this.成員;與base.成員,沒有區別。
b)如果子類重寫了父類成員,則this.成員;調用的是子類重寫以后的。base.成員;調用的依然是父類的成員。
c)子類構造函數默認調用父類的無參構造函數;
d)如果父類沒有無參構造函數,則必須指明調用父類哪個構造函數
文章列表
全站熱搜