作者chrisQQ (ChrisLiu)
看板C_Sharp
标题Re: [问题] 关於呼叫base class
时间Thu Feb 11 07:05:13 2010
1F:→ juriolegend:((爷爷)this).method() ?? 02/09 00:05
2F:→ Elly:直接base啦,继承几百层还是base.method name() 02/09 20:27
3F:→ 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
4F:→ blestadsl:感觉中文变数用在教学~好清楚XD 02/11 08:24
5F:→ chancewen:看起来好不习惯XD 02/11 08:38
6F:→ scottzz:呵呵...蛮新鲜的感受 02/11 08:41
7F:推 Elly:你把上上层给遮蔽了当然取不到呀 02/12 22:45
8F:→ Elly:以让最後一层能呼叫到,中间都不能有遮蔽或override 02/12 22:47
9F:→ chrisQQ:对,编译的时候他好像有说我隐藏了什麽 02/13 01:05
10F:→ chrisQQ:那不知道不遮蔽的方法该怎麽写@@? 或是有 keyword 02/13 01:06
11F:→ chrisQQ:可以稍微提示我一下 > < 02/13 01:06