C#中的隐藏与重写:深入解析
面向对象编程中,继承机制在扩展和修改类行为方面至关重要。然而,在修改方法行为时,存在两种不同的机制:隐藏和重写。
隐藏:屏蔽基类方法
隐藏是指派生类声明一个与从基类继承的成员同名的成员。与重写不同,派生类不会建立父子关系。相反,它创建了一个隐藏基类成员的新实体。
以下是一个示例:
<code class="language-csharp">class Animal { public virtual string SayHello() { return "Hello from Animal"; } } class Dog : Animal { public new string SayHello() { return "Hello from Dog"; } }</code>
在这个场景中,Dog中声明的SayHello()方法隐藏了从Animal继承的方法。当Dog对象调用SayHello()时,它将执行隐藏的方法,屏蔽基类的实现。
重写:修改基类方法行为
另一方面,重写是指子类声明一个与从父类继承的方法具有相同签名的方法。默认情况下,重写方法继承基类方法的访问修饰符和返回类型。但是,它们可以修改实现以自定义行为。
<code class="language-csharp">class Animal { public virtual string SayHello() { return "Hello from Animal"; } } class Dog : Animal { public override string SayHello() { return "Hello from Dog"; } }</code>
在这个示例中,Dog中的SayHello()方法重写了Animal中定义的方法。当在Dog对象上调用时,将执行重写的方法,提供特定于狗的自定义行为。
隐藏与重写的关键区别
何时使用隐藏和重写
隐藏通常用于避免继承层次结构中的命名冲突,但它也可以用于有选择地从派生类隐藏继承的方法。
另一方面,重写使子类能够修改继承方法的行为,从而提供灵活性来自定义类功能,而不会破坏继承树。
以上是阴影与C#覆盖:有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!