mir*_*iri 10 .net c# abstract-class
假设我做了一个大班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...
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,这不会奏效.由于私人摘要:
virtual or abstract members cannot be private
Run Code Online (Sandbox Code Playgroud)
所以生病使每个私人方法都受到保护:
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...
}
}
Run Code Online (Sandbox Code Playgroud)
这好吗?我的意思是它有效,但它应该如何?当我只需要同一个类中的方法时使用protected(就像这里:CheckGasoline()只需要StartEngine()).以某种方式私人会看起来更好.
有什么建议?谢谢.
Dan*_*iel 10
除了它们所在的类之外,任何类都无法访问私有方法 - 这包括派生类.
另一方面,受保护的方法既可以访问它们所在的类,也可以访问它们的派生类.
您对受保护的使用是正确的.
您可能会发现这篇文章有所帮助:http://msdn.microsoft.com/en-us/library/ba0a1yw2(v = vs.80).aspx.
| 归档时间: |
|
| 查看次数: |
21484 次 |
| 最近记录: |