У меня есть теоретический / практический вопрос о том, как наследование работает в C #.
Допустим, мне нужно смоделировать некоторые автомобили, поэтому у меня есть несколько общих методов, которые должны реализовывать все автомобили, и пилот должензнать.В кодовых словах это должен быть интерфейс:
interface Automobile {
void speedup();
void break();
void steer();
//bla bla
}
Теперь у всех видов автомобилей должны быть общие технические реализации, помимо действий, которые пилот может выполнять над ними, скажем, свойство fuelLevel, в этомЯ до сих пор не хочу знать, как автомобиль ускоряется или ломается, поэтому я написал бы:
abstract class Car : Automobile {
int fuelLevel; // for example....
public abstract void speedup();
public abstract void break();
public abstract void steer();
}
Теперь я хочу смоделировать Ferrari, поэтому:
class Ferrari : Car {
public void speedup() { ... }
public void break() { ... }
public void steer() { ... }
}
Теперь в Java этот код должен работать (изменяя некоторый синтаксис), но в C # - нет, потому что он говорит:
Error 1 'Ferrari' does not implement inherited abstract member 'Car.speedup()'
Error 1 'Ferrari' does not implement inherited abstract member 'Car.break()'
Error 1 'Ferrari' does not implement inherited abstract member 'Car.steer()'
Почему?Как мне решить эту проблему?