您好,我有一个抽象类,其中有一些公共(public)方法和一些抽象方法。 我有公众,以便他们为派生类实现通用方法。
令我困惑的是为什么我要定义一个公共(public)抽象方法而不是 protected 抽象方法。在抽象类中定义公共(public)抽象方法对我来说毫无意义....因为如果是抽象将在派生类中被覆盖,但同样是如果被定义为公共(public)但不知何故定义更有意义它受到保护,因为我们知道我们将在派生类中覆盖它。
在抽象类中将方法定义为public abstract是错误的吗?哪个更好,为什么?
最佳答案
这取决于你想达到什么目的。例如,您有一个 Television
具有 3 个方法的类,TurnOn
, TurnOff
, 和 Draw
.
您只希望客户 TurnOn
或 TurnOff
电视但只有它的子类应该知道什么以及如何Draw
屏幕上。所以,Television
看起来或多或少像下面这样。
public abstract class Television
{
public abstract void TurnOn();
public abstract void TurnOff();
protected abstract void Draw();
}
然后每个公司都有自己的实现。
public sealed class MyTelevision
: Television
{
public override void TurnOn()
{
Console.WriteLine("Turn on my tv");
}
public override void TurnOff()
{
Console.WriteLine("Turn off my tv");
}
protected override void Draw()
{
// code here.
}
}
客户可以TurnOn
或 TurnOff
电视但不能Draw
屏幕上的任何内容。
关于c# - 抽象类中 protected 抽象或公共(public)抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369047/