隱藏基類成員 淺談
阿新 • • 發佈:2019-02-11
#region //隱藏基類成員的使用 /* *可以在派生類中使用base訪問基類的成員。但是不能在靜態方法中使用base */ class Person { private string name; private int age; private long ID; public Person(string n, int a, long i) { name = n; age = a; ID = i; } public string speak() { return string.Format("姓名:{0},年齡:{1},身份證號:{2}",name,age,ID); } public void say() { Console.WriteLine("I am a Person "); } } class Student : Person { private string department; private int no; public Student(string n, int a, long i, string d, int s) : base(n, a, i) { department = d; no = s; } public new string speak() { return string.Format("學號:{0}\n,{1},\n專業:{2}",no, base.speak(), department); } public new void say() { Console.WriteLine("I am a student"); } } #endregion class Program { static void Main(string[] args) { Person stu1=new Student("麗麗",21,12345,"電氣系",01); Console.WriteLine(stu1.speak()); stu1.say(); Student stu2 = new Student("雷哥",21,12345,"計算機系", 01); Console.WriteLine(stu2.speak()); stu2.say(); Console.Read(); } }
輸出結果:
/*從上面兩個物件,一個基類的物件 stu1,一個子類的物件stu2,從上面的輸出結果可以看出
* 隱藏類成員,父類物件呼叫父類的方法(即使該方法被子類隱藏)。而子類呼叫方法時,如果該方法隱藏了
* 父類的方法,則呼叫自身的,如果沒有隱藏(自身沒有該方法,則從父類中尋找。)
*/