繁体   English   中英

抽象基类和构造函数可见性

[英]Abstract base class and constructor visibility

我通常会创建一个基类abstract来给出信号, 这是一个基类 - 你无法实例化我! 即使其中没​​有抽象方法。

此外,我总是使基类构造函数受到保护,虽然没有真正的功能需要这样做 - 我只想提出另一个观点,即这是一个基类 - 你无法实例化我!

这样做我是否会跳过篮球? 你是做什么?

这是合理的,是的。 构造函数在公共或受保护之间不存在功能差异,但使其受到保护可以更清楚地指示预期用途。

如果没有抽象方法,我不确定你应该把类设置为抽象。 如果它具有从它派生的类所期望的功能的完整实现,为什么不让它实例化并按原样使用? 如果这只是一种在一系列类别中共享功能的方法,那么基于组合的设计可能更合适,即。 让每个'派生'类引用此类而不是从它派生。

是否有一个特定的场景,你可以想到这可能是一个合适的设计?

编辑
我发现没有抽象方法的抽象类有意义的唯一场景是抽象类部分实现和接口。 派生类是完成实现所必需的。

链接到示例 (编辑:网站不见了, 此博客帖子似乎是内容的副本)

在抽象类中,public或protected构造函数之间没有区别。 事实上,我认为编译器在将抽象类的构造函数定义为public时应该给出警告或错误。 太糟糕了没有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM