C#子类的引用可不可以调用父类的方法?

classA{publicviritualvoidshow(){Console.WriteLine("A");}}classB:A{publicoverridevoids... class A
{
public viritual void show()
{
Console.WriteLine("A");
}
}
class B:A
{
public override void show()
{
Console.WriteLine("B");
}
}
..........
B pro=new B();
pro.show();
A pro1=pro;
pro.show();
//都是调用B中的show();有没有什么方法,可以用B的引用调用A中的show()?
B pro=new B();
pro.show();
A pro1=pro;
pro1.show();
展开
 我来答
西三227
推荐于2016-09-01 · TA获得超过1168个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:338万
展开全部
刚刚才回答了一次,现在又遇到一个。
.net处理这种问题有两种机制:1,子类使用new关键字屏蔽父类的方法,则调用谁的方法由“定义时的类型决定”;2,子类使用override关键字重写父类方法,则调用谁的方法由”运行时引用真实的对象决定“。
如果你用让它调用A的方法,很简单,让它引用A的对象。例如:
B pro=new A();
pro.show();
horsoner
2010-04-01 · TA获得超过238个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:195万
展开全部
这样修改就可以了

class B:A
{
public new void show()
{
Console.WriteLine("B");
}
}

只有使用new才可以让各自的对象引用自己的方法.
override的话,子类的方法已经覆写了父类的方法,只有实例化父类自身,否则无法通过子类调用到父类的方法.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whs_love
2010-04-01 · TA获得超过257个赞
知道小有建树答主
回答量:798
采纳率:0%
帮助的人:409万
展开全部
因为方法已经被子类重写,所以子类的引用不能调用父类的方法。
所以两个输出都是B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mwtcz
2010-04-01 · TA获得超过1322个赞
知道小有建树答主
回答量:1367
采纳率:50%
帮助的人:1015万
展开全部
似乎是没有办法。在子类内部是可以的,可以用base指针,在外部,貌似没有办法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Buddhacrazy
2010-04-01 · TA获得超过273个赞
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:57.7万
展开全部
A pro = new A();
pro.show();
pro = new B();
pro.show();
可以用A的引用调用B中的show(),反过来好像不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式