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