看板 C_Sharp 關於我們 聯絡資訊
juriolegend:((爺爺)this).method() ?? 02/09 00:05
Elly:直接base啦,繼承幾百層還是base.method name() 02/09 20:27
QQ29: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
blestadsl:感覺中文變數用在教學~好清楚XD 02/11 08:24
chancewen:看起來好不習慣XD 02/11 08:38
scottzz:呵呵...蠻新鮮的感受 02/11 08:41
Elly:你把上上層給遮蔽了當然取不到呀 02/12 22:45
Elly:以讓最後一層能呼叫到,中間都不能有遮蔽或override 02/12 22:47
chrisQQ:對,編譯的時候他好像有說我隱藏了什麼 02/13 01:05
chrisQQ:那不知道不遮蔽的方法該怎麼寫@@? 或是有 keyword 02/13 01:06
chrisQQ:可以稍微提示我一下 > < 02/13 01:06