abstract
修饰类名为抽象类,修饰方法为抽象方法。如果一个类为抽象类,则这个类智能是其他某个类的基类。抽象方法在抽象类中没有函数体。抽象类中的抽象方法是没有方法体的,继承其的子类必须实现抽象类的抽象方法。
抽象类有如下特征:
abstract class A //abstract 关键字在class前面{ public abstract void run();//方法是将关键字abstract 添加到方法的返回类型的前面}
abstract class A{public virtual void MethodA(){ //do something}public abstract void run();} public class B:A{public override void MethodA(){ //do somthing}public virtual void run(){ //do something}}
// Define the base class class Car { public virtual void DescribeCar() { System.Console.WriteLine("Four wheels and an engine."); } } // Define the derived classes class ConvertibleCar : Car { public new void DescribeCar() { System.Console.WriteLine("A roof that opens up."); } } class Minivan : Car { public override void DescribeCar() { System.Console.WriteLine("Carries seven people."); } } public class Program { public static void Main() { Car car1 = new Car(); car1.DescribeCar(); System.Console.WriteLine("----------"); Car car2 = new ConvertibleCar(); car2.DescribeCar(); System.Console.WriteLine("----------"); Car car3 = new Minivan(); car3.DescribeCar(); System.Console.WriteLine("----------"); System.Console.ReadKey(); } }
class X { protected virtual void F() { Console.WriteLine("X.F"); } protected virtual void F2() { Console.WriteLine("X.F2"); } } class Y : X { sealed protected override void F() { Console.WriteLine("Y.F"); } protected override void F2() { Console.WriteLine("X.F3"); } } class Z : Y { // Attempting to override F causes compiler error CS0239. // protected override void F() { Console.WriteLine("C.F"); }//sealed修饰的方法是不允许继承的 // Overriding F2 is allowed. protected override void F2() { Console.WriteLine("Z.F2"); } }
联系客服