【问题标题】:About final class [duplicate]关于最后一堂课[重复]
【发布时间】:2016-01-09 03:31:15
【问题描述】:

当我们将一个类中的所有变量和方法声明为 final 时,我们就受限于 override 的概念。

那么,“我们为什么要通过使用 final 类来限制 OOP 语言中的 IS-A 关系(即使我们限制了 IS-A 关系,这种语言也有 Has-A 关系)?”

我的观点是我们不能以任何方式限制访问我们类的成员,然后通过允许 IS-A 关系来轻松访问。 否则创建对象和所有东西很头疼? (在我看来“访问”不包括修改)

如果我错过了任何重要的编程主题,请见谅。告诉我,它是什么?

【问题讨论】:

    标签: java


    【解决方案1】:

    是否有必要将一个类声明为最终类?

    需要,不。如果您想禁止扩展它,请声明一个类 final。 这可以防止编程错误。 例如,推荐的做法是让只有静态方法的实用程序类成为最终的, 因为从这样的类继承是没有意义的, 并且显然是一个编程错误。

    【讨论】:

      【解决方案2】:

      安全将是一项必要条件。 Java中的String类是一个不可变/最终类。没有子类是可能的系统类是另一个例子。

      在此处阅读更多内容: Good reasons to prohibit inheritance in Java?

      【讨论】:

        【解决方案3】:

        是否有必要将一个类声明为最终类?

        是的。如果您使用class 实现Singleton pattern。如果有人可以对您的 Singleton 进行子类化,那么可能会有多个(这违反了 Singleton 模式)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-05
          • 2019-12-04
          • 2018-11-10
          • 2010-12-31
          • 2014-02-10
          • 1970-01-01
          • 2020-08-01
          • 2021-06-28
          相关资源
          最近更新 更多