namespace ConsoleApplication1
{
public interface IVehicle
{
void Start();
void Stop();
void Turn();
}
public class VehicleBase : IVehicle
{
void IVehicle.Start()
{
Console.WriteLine("VehicleBase: IVehicle.Start.");
}
public virtual void Start()
{
Console.WriteLine("VehicleBase: Start.");
}
public void Stop()
{
Console.WriteLine("VehicleBase: Stop.");
}
public virtual void Turn()
{
Console.WriteLine("VehicleBase: Turn.");
}
}
public class Car : VehicleBase
{
public override void Start()
{
Console.WriteLine("Car: Start.");
}
public new void Stop()
{
Console.WriteLine("Car: Stop.");
}
public override void Turn()
{
Console.WriteLine("Car: Turn.");
}
}
public class Benz : Car , IVehicle
{
public override void Start()
{
Console.WriteLine("Benz: Start.");
}
public new void Stop()
{
Console.WriteLine("Benz: Stop.");
}
public new void Turn()
{
Console.WriteLine("Benz: Turn.");
}
}
class Program
{
static void Main(string[] args)
{
IVehicle v;
VehicleBase vb;
Car car;
Benz bz;
bz = new Benz();
v = bz;
vb = bz;
car = bz;
v.Turn();
vb.Turn();
car.Turn();
bz.Turn();
Console.WriteLine("");
v.Start();
vb.Start();
car.Start();
bz.Start();
Console.Read();
}
/*
Result:
If class Benz was defined as:
public class Benz : Car , IVehicle
{
public new void Start()
{
Console.WriteLine("Benz: Start.");
}
public new void Stop()
{
Console.WriteLine("Benz: Stop.");
}
public new void Turn()
{
Console.WriteLine("Benz: Turn.");
}
}
the result is:
Benz: Turn.
Car: Turn.
Car: Turn.
Benz: Turn.
Benz: Start.
Car: Start.
Car: Start.
Benz: Start.
If class Benz was defined as:
public class Benz : Car
{
public new void Start()
{
Console.WriteLine("Benz: Start.");
}
public new void Stop()
{
Console.WriteLine("Benz: Stop.");
}
public new void Turn()
{
Console.WriteLine("Benz: Turn.");
}
}
the result is:
Car: Turn.
Car: Turn.
Car: Turn.
Benz: Turn.
VehicleBase: IVehicle.Start.
Car: Start.
Car: Start.
Benz: Start.
If class Benz was defined as:
public class Benz : Car , IVehicle
{
public override void Start()
{
Console.WriteLine("Benz: Start.");
}
public new void Stop()
{
Console.WriteLine("Benz: Stop.");
}
public new void Turn()
{
Console.WriteLine("Benz: Turn.");
}
}
the result is:
Benz: Turn.
Car: Turn.
Car: Turn.
Benz: Turn.
Benz: Start.
Benz: Start.
Benz: Start.
Benz: Start.
*/
}
}