C# - 阻止派生类重写虚成员

Posted 勿在浮沙筑高台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# - 阻止派生类重写虚成员相关的知识,希望对你有一定的参考价值。

 1 using System;
 2 
 3 namespace 类_阻止派生类重写虚成员
 4 {
 5     // 声明一个抽象类Animal(用abstract关键字声明抽象类)
 6     public abstract class Animal
 7     {
 8         // 基类的抽象方法Voice(); 功能在派生类实现
 9         public abstract void Voice();
10     }
11 
12     // 派生类(子类)继承自Animal
13     // 
14     public class Horse : Animal
15     {
16         // 用sealed修饰重写的Voice()方法,无法在Horse的派生类中重写
17         public sealed override void Voice()
18         {
19             Console.WriteLine("马发出嘶....嘶....嘶....嘶的声音");       
20         }
21     }
22 
23     // 派生类(子类)继承Horse类
24     public class Test : Horse
25     {
26         /*--------------------------------------------------
27          // 无法重写Horse基类的密封(sealed)的方法Voice()
28         public override void Voice()
29         {
30 
31         }
32         ---------------------------------------------------*/
33     }
34 
35     class Program
36     {
37         static void Main(string[] args)
38         {
39             // 抽象类不能被实例化
40             //Animal a = new Animal();    // 编译错误
41             Horse h = new Horse();
42             h.Voice();
43 
44             Console.ReadLine();
45         }
46     }
47 }

以上是关于C# - 阻止派生类重写虚成员的主要内容,如果未能解决你的问题,请参考以下文章

C# virtual 和 abstract 区别

virtual这个关键字有啥用

C# 关键字--virtual(转)

[C++11 类的改进] --- 继承控制:final和override

继承与多态C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态

#yyds干货盘点# C#中类的override和virtual