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();
}