1

我正在使用 bada 并参考这里的教程,它开始:

    class MainForm:
       public Osp::Ui::Controls::Form,
       public Osp::Ui::IActionEventListener,
       public Osp::Ui::ITouchEventListener
    {

我正在运行我最近删除公共说明符以减少我的公共 API 的代码。您会看到实现这些接口的函数也公开声明,我认为没有必要并将其设为私有。在实现我自己的接口时,我会毫不犹豫地这样做,因为这些接口可能提供比我希望我的具体类的常规客户端接收的更多的访问权限。

将它们公开的原因是什么,我错过了什么?

我想它被提倡以帮助可扩展性,但对于开发应用程序而不是库的开发人员,我会挑战这种智慧。

4

2 回答 2

4

如果FormIActionEventListener并且ITouchEventListener已经支持许多可用的方法,在大多数情况下为什么要隐藏它们?相反:如果您隐藏它们并且将来有人需要它们,那么您将更难维护课程,因为您需要再次提供它们。

如果您需要隐藏父级的方法,还有另一种方法可以做到这一点:与其继承,不如将“父级”作为一个字段包含在新类中。

在某些语言(例如 C#)中,公共继承是唯一的选择。

于 2012-01-21T10:18:12.377 回答
0

对我来说,“接口”的私有继承是荒谬的。

对象的接口是它的一组公共方法。正如 llya 所说,如果您想在内部使用类提供的功能,请使用对象组合。如果你想提供接口的一个子集,那么要么组合,要么简单地声明一个更具限制性的接口。

如果“接口”和从该接口获取对象的函数在第三方库中,则意味着开发人员想强迫您实现每个方法,因此您必须提供它们。

于 2012-01-21T10:30:04.673 回答