C# 如何呼叫上上層的method |
尚未結案
|
will
中階會員 發表:176 回覆:135 積分:62 註冊:2002-04-14 發送簡訊給我 |
base 能呼叫上一層的method
如下面的範例, 執行結果為
I am Parent
I am Child 如何在Child 的WhoAmI 內, 引用上上層的method呢而show 出 I am GrandParent
I am Parent
I am Child 呢 --------------------------------------------------------------------------
using System;
class Test
{
static void Main()
{
Child aChild = new Child() ;
aChild.WhoAmI();
Console.Read() ;
}
} class GrandParent
{ public virtual void WhoAmI()
{
Console.WriteLine("I am GrandParent");
}
} class Parent : GrandParent { public virtual void WhoAmI()
{
Console.WriteLine("I am Parent");
}
} class Child : Parent { public virtual void WhoAmI()
{
base.WhoAmI();
Console.WriteLine("I am Child");
}
} 發表人 - will 於 2005/01/23 07:18:23
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
|
will
中階會員 發表:176 回覆:135 積分:62 註冊:2002-04-14 發送簡訊給我 |
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
引言: base 能呼叫上一層的method 如下面的範例, 執行結果為 I am Parent I am Child 如何在Child 的WhoAmI 內, 引用上上層的method呢而show 出 I am GrandParent I am Parent I am Child 呢 -------------------------------------------------------------------------- using System; class Test { static void Main() { Child aChild = new Child() ; aChild.WhoAmI(); Console.Read() ; } } class GrandParent { public virtual void WhoAmI() { Console.WriteLine("I am GrandParent"); } } class Parent : GrandParent { public virtual void WhoAmI() { Console.WriteLine("I am Parent"); } } class Child : Parent { public virtual void WhoAmI() { base.WhoAmI(); Console.WriteLine("I am Child"); } } 發表人 - will 於 2005/01/23 07:18:23class Test:GrandParent (您可以直接繼承:袓父即可,因為每代都有繼承關係)然後複寫回去各代的方法。 { static void Main() { Child aChild = new Child() ; aChild.WhoAmI(); Console.Read() ; } } DHM
------
ATEIN |
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
引言: base 能呼叫上一層的method 如下面的範例, 執行結果為 I am Parent I am Child 如何在Child 的WhoAmI 內, 引用上上層的method呢而show 出 I am GrandParent I am Parent I am Child 呢 -------------------------------------------------------------------------- using System; class Test { static void Main() { Child aChild = new Child() ; aChild.WhoAmI(); Console.Read() ; } } class GrandParent { public virtual void WhoAmI() { Console.WriteLine("I am GrandParent"); } } class Parent : GrandParent { public virtual void WhoAmI() { Console.WriteLine("I am Parent"); } } class Child : Parent { public virtual void WhoAmI() { base.WhoAmI(); Console.WriteLine("I am Child"); } } 發表人 - will 於 2005/01/23 07:18:23紅色為有誤的部份, 在子類別中成重新宣告為 virtual , 會隱藏父類別的方法, 這樣並不是覆載, 而是重新定義一個 WhoAmI 的 method, 只不過跟父類別同名. 正確的子類別裡的覆載修飾詞應該為 override. 正確的寫法為 class GrandParent { public virtual void WhoAmI() { Console.WriteLine("I am GrandParent"); } } class Parent : GrandParent { public override void WhoAmI() { base.WhoAmI(); Console.WriteLine("I am Parent"); } } class Child : Parent { public override void WhoAmI() { base.WhoAmI(); Console.WriteLine("I am Child"); } } |
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
引言:討論一下:應是複寫(override)才是...而不是複載(overload) 抱歉我無意冒犯!只是討論一下。 DHM引言: base 能呼叫上一層的method 如下面的範例, 執行結果為 I am Parent I am Child 如何在Child 的WhoAmI 內, 引用上上層的method呢而show 出 I am GrandParent I am Parent I am Child 呢 -------------------------------------------------------------------------- using System; class Test { static void Main() { Child aChild = new Child() ; aChild.WhoAmI(); Console.Read() ; } } class GrandParent { public virtual void WhoAmI() { Console.WriteLine("I am GrandParent"); } } class Parent : GrandParent { public virtual void WhoAmI() { Console.WriteLine("I am Parent"); } } class Child : Parent { public virtual void WhoAmI() { base.WhoAmI(); Console.WriteLine("I am Child"); } } 發表人 - will 於 2005/01/23 07:18:23紅色為有誤的部份, 在子類別中成重新宣告為 virtual , 會隱藏父類別的方法, 這樣並不是覆載, 而是重新定義一個 WhoAmI 的 method, 只不過跟父類別同名. 正確的子類別裡的覆載修飾詞應該為 override. 正確的寫法為class GrandParent { public virtual void WhoAmI() { Console.WriteLine("I am GrandParent"); } } class Parent : GrandParent { public override void WhoAmI() { base.WhoAmI(); Console.WriteLine("I am Parent"); } } class Child : Parent { public override void WhoAmI() { base.WhoAmI(); Console.WriteLine("I am Child"); } }
------
ATEIN |
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |