1.类的一个主要的特点是 “多态性”
关于多态性,我们可以简单的认为,类的函数具有多种状态(即多种实现的方式),当然这类应该是基类。在C#中,类的方法和属性都可以实现多态。
关键字: virtual new ovrride
基类中必须使用virtual来进行声明;
子类继承父类,当需要重写基类中virtual修饰的方法时,需要使用ovrride关键字,也可以使用new,如果重载了基类virtual方法,但是没有使用ovrride,new,
默认的修饰符是new。
ovrride和new的区别
ovrride:
多态性会指定到子类最远的ovrride那个方法。
new:
多态性会指定到离new那个方法最近的ovrride方法(如果继承路径中没有ovrride方法,那就调用了基类本身的方法了)。
using System;
namespace MyTraining
{
class Book
{
public virtual void Information()
{
Console.WriteLine("Book");
}
}
class MathBook : Book
{
public override void Information()
{
Console.WriteLine("MathBook");
}
}
class GeometryBook : MathBook
{
public new void Information()
{
Console.WriteLine("GeometryBook");
}
}
class Test
{
static void Main()
{
Book myBook = new MathBook();
myBook.Information();
myBook = new GeometryBook();
myBook.Information();
Console.ReadKey();
}
}
}
2.关于抽象类
抽象类用abstract来修饰,方法也abstract,方法需要抽象,不能实现。抽象类因为抽象,所以不能产生具体的实例。