文章出處

base關鍵字      專門用來在子類訪問父類成員

base.標識符:“.”調用父類同名屬性、同名函數、構造函數

 11)父類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)如果父類沒有無參構造函數,則必須指明調用父類哪個構造函數


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()