繁体   English   中英

使用派生类对象访问重写的基类成员(C#)

[英]Accessing an overridden base class member using a derived class object (C#)

给出2种类型

class A { public virtual void Hello() { Console.WriteLine("A"); } }
class B : A { public override void Hello() { Console.WriteLine("B"); } }

和' B b = new B();的实例B b = new B();

我可以访问AbHello()方法吗? (我可以想到在A中暴露A作为属性但不确定是否有另一种方式)

我知道这在c ++中是可能的,但在c#中我的头脑。

PS :请不要谈论'为什么你想要这个?' 或者“这是一个糟糕的设计”等。

不是来自外面。

内部 ,实例可以通过base.Hello()调用它,因此您可以添加:

public void Foo() { base.Hello(); }   

在c#中是不可能的。 抱歉。

你可以试试阴影:

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

然后你可以这样做:

        A b = new B();
        b.Hello(); //prints A
       (B)b).Hello(); //prints B

       B b1 = new B();
       b1.Hello(); //prints B

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM