抽象クラスとインタフェースを生成して使用します

    class Program
    {
        static void Main(string[] args)
        {
            Car car = new Car();
            car.Run();
            car.Stop();
        }
    }
    class Vehicle
    {
        public virtual void Run()
        {
            Console.WriteLine("Vehicle is Running");
        }
        public virtual void Stop()
        {
            Console.WriteLine("Vehicle is Stopped");
        }
        public virtual void Full()
        {
            Console.WriteLine("Full Fuel");
        }
    }
    class Car:Vehicle
    {
        public override void Run()
        {
            Console.WriteLine("Car is Running");
        }

        public override void Stop()
        {
            Console.WriteLine("Car is Stopped");
        }
    }
}

私たちは、この例では、メソッドのVehicleクラスが以前に使用されていなかった、と車があまりにも特定のこの引数を実行して見つけます。
したがって、我々は、Vehicleクラスを変更し、その結果、書面での方法を聞かせていません。

    class Vehicle
    {
        public virtual void Run() { }
        public virtual void Stop() { }
    }

しかし、これはそれを書いていない、結果として不適切であり、単にメソッド本体はまた、唯一のメソッド名を残して、それを削除置く
ああ、この次のコードは、だけで、例としてはコンパイルされません

    class Vehicle
    {
        public virtual void Run() ;//这样是无法编译的
        public virtual void Stop() ;//这样是无法编译的
    }

常に仮想メソッド(仮想)された、今メソッド本体は、より真ませんでしたので、生まれた - 抽象メソッド

    abstract class Vehicle
    {
        public abstract void Run();
        public abstract void Stop();
    }

まだ上書きされてリライトを使用する場合は、そのためだけ変更することなく交換することができます。
抽象クラスでも実際の内部抽象クラスのメソッドが、インスタンス化することはできませんが、抽象メソッドがあるので、また、すべてのメソッドとエラーを呼び出すことはできませんので、抽象クラスは、基底クラスや学生をするように設計されています。
例えば:

    abstract class Vehicle
    {
        public abstract void Run();
        public abstract void Stop();
        public void full()
        {
            Console.WriteLine("Full Fuel");
        }
    }

()フル具体的な方法がある場合でも、まだインスタンス化することはできません。

だから、これは特に、抽象、抽象クラスの抽象は、任意の実際のメソッドが含まれていないと言います

    abstract class Vehicle
    {
        public abstract void Run();
        public abstract void Stop();
    }

おすすめ

転載: www.cnblogs.com/maomaodesu/p/11612580.html
おすすめ