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(); 展开
{
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(); 展开
展开全部
这样修改就可以了
class B:A
{
public new void show()
{
Console.WriteLine("B");
}
}
只有使用new才可以让各自的对象引用自己的方法.
override的话,子类的方法已经覆写了父类的方法,只有实例化父类自身,否则无法通过子类调用到父类的方法.
class B:A
{
public new void show()
{
Console.WriteLine("B");
}
}
只有使用new才可以让各自的对象引用自己的方法.
override的话,子类的方法已经覆写了父类的方法,只有实例化父类自身,否则无法通过子类调用到父类的方法.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为方法已经被子类重写,所以子类的引用不能调用父类的方法。
所以两个输出都是B
所以两个输出都是B
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
似乎是没有办法。在子类内部是可以的,可以用base指针,在外部,貌似没有办法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A pro = new A();
pro.show();
pro = new B();
pro.show();
可以用A的引用调用B中的show(),反过来好像不行
pro.show();
pro = new B();
pro.show();
可以用A的引用调用B中的show(),反过来好像不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询