abstract(修饰的类称为抽象类)
1.abstract修饰的类不能被实例化,只能被继承(可以用在Base类,不去实例化,只是被继承)
2.abstract修饰的类中必须实现每一个abstract修饰的方法
3.abstract修饰的方法是没有实现的,只能在抽象类中声明,并且该方法
必须在继承的子类中重写
4.抽象类中可以写普通的方法(抽象方法必须在抽象类中,抽象类中不一定必须由抽象方法)
5.抽象类的构造函数可以省略,编译器默认加上,抽象类的构造函数只能是普通方法
virtual(虚函数声明)
1.声明了virtual的父类方法可以被子类重写(override)(非强制的)
2.virtual可以修饰方法,属性,索引,不可以修饰类
3.virtual不可以和static一起修饰
代码示例:
public abstract class demoFatnerClass { public void func() //普通方法 { Console.WriteLine("father's ordinary fun."); } public virtual void virFunc() //虚函数 选择性被子类重写 { Console.WriteLine("father 's virtual fun."); } public abstract void absFunc(); //抽象方法 子类必须重写该方法不写编译器会报错 } public class demoSonClass:demoFatnerClass { public override void absFunc() //重写抽象方法 { Console.WriteLine("son overriden abstract function."); } public override void virFunc() //重写父类虚函数,可以不写 { Console.WriteLine("son overriden virtual function."); } } class Program { static void Main() { demoSonClass son = new demoSonClass(); son.func(); son.absFunc(); son.virFunc(); Console.ReadKey(); } }
输出: