国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

深入剖析C#繼承機制3

2024-07-21 02:18:13
字體:
來源:轉載
供稿:網友
三. 訪問與隱藏基類成員

  (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.有時,對于基類已有定義的方法,打算重新定義自己的實現。

  child類可以自己重新定義print( )方法的實現。child的print( )方法覆蓋了parent中的 print 方法。結果是:除非經過特別指明,parent類中的print方法不會被調用。

  3.在child類的 print( ) 方法中,我們特別指明:調用的是parent類中的 print( ) 方法。

  方法名前面為"base",一旦使用"base"關鍵字之后,你就可以訪問基類的具有公有或者保護權限的成員。 child類中的print( )方法的執行結果出現上面的第三行和第四行。

  4.訪問基類成員的另外一種方法是:通過顯式類型轉換。

  在child類的main( )方法中的最后一條語句就是這么做的。記?。号缮愂瞧浠惖奶乩?。這個事實告訴我們:可以在派生類中進行數據類型的轉換,使其成為基類的一個實例。上面代碼的最后一行實際上執行了parent類中的 print( )方法。



  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 永胜县| 普陀区| 栾川县| 庄河市| 濮阳市| 石门县| 溧水县| 西城区| 杭锦旗| 丰城市| 烟台市| 故城县| 政和县| 南涧| 广丰县| 集贤县| 双辽市| 周口市| 钟山县| 铜梁县| 大宁县| 伊通| 滕州市| 博乐市| 永顺县| 蕉岭县| 通辽市| 盐池县| 江油市| 漠河县| 白银市| 新宾| 普洱| 如东县| 元氏县| 自贡市| 梁山县| 宁陵县| 攀枝花市| 日土县| 海盐县|