假设我开设了一个主要课程Car
- 我希望这个课程是抽象的。抽象因为这是我的主要课程,没有人应该做这个课程的对象。这个类应该只作为“骨干”存在。
我希望只能从Car
(比如说梅赛德斯、法拉利......)的子类创建类。因为每辆车都应该有像StartEngine
我把它放到专业课上的方法。假设我有这个:
abstract class Car
{
public string Name { get; set; }
public abstract void StartEngine();
private abstract bool CheckGasoline();
//and so on...
}
class Mercedes : Car
{
private override bool CheckGasoline()
{
//somehow check gasoline and return whatever...
}
public override void StartEngine()
{
if (CheckGasoline())
//start engine...
}
}
好吧,这行不通。由于私人摘要:
virtual or abstract members cannot be private
所以生病使每个私有方法都受到保护:
abstract class Car
{
public string Name { get; set; }
public abstract void StartEngine();
protected abstract bool CheckGasoline();
//and so on...
}
class Mercedes : Car
{
protected override bool CheckGasoline()
{
//somehow check gasoline and return whatever...
}
public override void StartEngine()
{
if (CheckGasoline())
//start engine...
}
}
这可以吗?我的意思是它正在工作,但它应该是这样吗?当我只需要同一个类中的方法时使用protected(比如这里:CheckGasoline()
只需要StartEngine()
)。不知何故,私人会更好看。
有什么建议么?谢谢你。