Re: [問題] 關於呼叫base class

看板C_Sharp (C#)作者 (ChrisLiu)時間15年前 (2010/02/11 07:05), 編輯推噓1(107)
留言8則, 5人參與, 最新討論串2/2 (看更多)

02/09 00:05,
((爺爺)this).method() ??
02/09 00:05

02/09 20:27,
直接base啦,繼承幾百層還是base.method name()
02/09 20:27

02/10 00:04,
base只是上一層阿..得不到爺爺
02/10 00:04
醒來很無聊就測試一下這個問題 順便跟最近中文變數/類別/方法問題應景一下 XD 接下來的程式碼在 VS2008 中正確無誤的跑過… using System; using System.Threading; using System.Collections.Generic; using System.Text; namespace ExtendTest { class 爺爺 { public void 我的名字() { Console.WriteLine("我是爺爺"); } } class 爸爸 : 爺爺 { public void 我的名字() { Console.WriteLine("我是爸爸"); } } class 兒子 : 爸爸 { public void 我的名字() { Console.WriteLine("我是兒子"); } public void 我爸爸的名字() { base.我的名字(); ((爸爸)this).我的名字(); } public void 我爺爺的名字() { ((爺爺)this).我的名字(); } } class Program { static void Main(string[] args) { 兒子 老大 = new 兒子(); 老大.我的名字(); 老大.我爸爸的名字(); 老大.我爺爺的名字(); Thread.Sleep(2000); } } } 廢話不多說,結論是 juriolegend 板友的方法是對的,我第一個反應也是這個… base 只能取到上一層,不能取到更上層(或是使用 base 有其他寫法?) 要用 base 的話,我只想到要在 class 爸爸 中 加上 我爸爸的名字 然後 base.我的名字,兒子才能用 base.我爸爸的名字… 去取得爺爺 不過這樣 method name 就不一樣了 另外,method 應該叫做我是誰 比較好 XD 取了之後就懶得改了… 測試而已 以上,太早起無聊一PO… -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.145.202.66

02/11 08:24, , 1F
感覺中文變數用在教學~好清楚XD
02/11 08:24, 1F

02/11 08:38, , 2F
看起來好不習慣XD
02/11 08:38, 2F

02/11 08:41, , 3F
呵呵...蠻新鮮的感受
02/11 08:41, 3F

02/12 22:45, , 4F
你把上上層給遮蔽了當然取不到呀
02/12 22:45, 4F

02/12 22:47, , 5F
以讓最後一層能呼叫到,中間都不能有遮蔽或override
02/12 22:47, 5F

02/13 01:05, , 6F
對,編譯的時候他好像有說我隱藏了什麼
02/13 01:05, 6F

02/13 01:06, , 7F
那不知道不遮蔽的方法該怎麼寫@@? 或是有 keyword
02/13 01:06, 7F

02/13 01:06, , 8F
可以稍微提示我一下 > <
02/13 01:06, 8F
文章代碼(AID): #1BSpki6R (C_Sharp)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BSpki6R (C_Sharp)