继承和多态
1.Abstract does force all the derived classes to implement the method, but nothing forces the derived derived classes to implement its own DrawWindow() method.
//sealed不允许被派生
abstract class Control { public virtual void A() { Console.WriteLine("A"); } }
定义抽象类之后Control类并不能被使用
2.重写基类函数的两种方法
去掉abstract
Use new to indicate that it is not an override of the base method in Control class.
class ListBox : Control { public new virtual void A() { Console.WriteLine("B"); } } class MainClass { static void Main(string[] args) { Control console; console = new ListBox(); console.A(); } }
输出A
Use override to indicate that it does want to override of the base method in Control class.
class ListBox : Control { public override void A() { Console.WriteLine("B"); } } class MainClass { static void Main(string[] args) { Control console; console = new ListBox(); console.A(); } }
输出B
public | The type or member can be accessed by any other code in the same assembly or another assembly that references it. |
private | The type or member can only be accessed by code in the same class or struct. |
protected | The type or member can only be accessed by code in the same class or struct, or in a derived class. |
我真是认真的好孩子
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步