继承和多态
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. |
我真是认真的好孩子