程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 深入剖析C#繼承機制3

深入剖析C#繼承機制3

編輯:.NET實例教程

三. 訪問與隱藏基類成員 

  (1) 訪問基類成員 

  通過base 關鍵字訪問基類的成員: 

   調用基類上已被其他方法重寫的方法。 
   指定創建派生類實例時應調用的基類構造函數。 
   基類訪問只能在構造函數、實例方法或實例屬性訪問器中進行。 
   從靜態方法中使用 base 關鍵字是錯誤的。 

  示例:下面程序中基類 Person 和派生類 Employee 都有一個名為 Getinfo 的方法。通過使用 base 關鍵字,可以從派生類中調用基類上的 Getinfo 方法。 


using System ; 
public class Person 

protected string ssn = "111-222-333-444" ; 
protected string name = "張三" ; 
public virtual void GetInfo() { 
Console.WriteLine("姓名: {0}", name) ; 
Console.WriteLine("編號: {0}", ssn) ; 


class Employee: Person 

public string id = "ABC567EFG23267" ; 
public override void GetInfo() { 
// 調用基類的GetInfo方法: 
base.GetInfo(); 
Console.WriteLine("成員ID: {0}", id) ; 


class TestClass { 
public static void Main() { 
Employee E = new Employee() ; 
E.GetInfo() ; 



  程序運行輸出: 

   姓名: 張三 
   編號: 111-222-333-444 
   成員ID: ABC567EFG23267 
   示例:派生類同基類進行通信。 


using System ; 
public class Parent 

string parentString; 
public Parent( ) 
{ Console.WriteLine("Parent Constructor.") ; } 
public Parent(string myString) { 
parentString = myString; 
Console.WriteLine(parentString) ; 

public void print( ) 
{ Console.WriteLine("I'm a Parent Class.") ; } 

public class Child : Parent 

public Child( ) : base("From Derived") 
{ Console.WriteLine("Child Constructor.") ; } 
public void print( ) { 
base.print( ) ; 
Console.WriteLine("I'm a Child Class.") ; 

public static void Main( ) { 
Child child = new Child( ) ; 
child.print( ) ; 
((Parent)child).print( ) ; 



  程序運行輸出: 

From Derived 
Child Constructor. 
I'm a Parent Class. 
I'm a Child Class. 
I'm a Parent Class. 

  說明: 

  1.派生類在初始化的過程中可以同基類進行通信。 

  上面代碼演示了在子類的構造函數定義中是如何實現同基類通信的。分號":"和關鍵字base用來調用帶有相應參數的基類的構造函數。輸出結果中,第一行表明:基類的構造函數最先被調用,其實在參數是字符串"From Derived"。 

  2.有時,對於基類已有定義的方法,打算重新定義自己的實現。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved