【发布时间】:2011-09-02 12:17:13
【问题描述】:
我有一个关于继承如何在 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();
}
现在我想为法拉利建模,所以:
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()'
为什么?我该如何解决这个问题?
【问题讨论】:
标签: c# oop inheritance