14. Інтерфейс
class SimpleCar : ICar
{
public float AccessibleDistance(int fuelAmount)
{
return 0.0f;
}
public void Accelerate(int value)
{
//
}
public void Break(int value)
{
//
}
}
15. Віртуальні функції
class VirtualCar
{
protected const float consumptionPerKm = 0.6f;
public virtual float AccessibleDistance(int fuelAmount)
{
return fuelAmount / consumptionPerKm;
}
}
class Tractor : VirtualCar
{
public override float AccessibleDistance(int fuelAmount)
{
fuelAmount = fuelAmount / 2; // broken-down tractor
return fuelAmount / consumptionPerKm;
}
}
16. Абстрактні класи і методи
abstract class NewPrototypeCar: Car
{
public abstract void HideLicensePlate();
}
class BondCar : NewPrototypeCar
{
public override void HideLicensePlate()
{
//
}
}
17. Поліморфізм
• Один інтерфейс – багато реалізацій
ICar car1 = new SimpleCar();
ICar car2 = new SuperCar();
car1.Accelerate(1);
car2.Accelerate(1);
18. Поліморфізм
class A
{
public virtual void DoWork() { }
}
class B : A
{
public override void DoWork() { }
}
class C : B
{
public sealed override void DoWork() { }
}
class D : C
{
public new void DoWork() { }
}