有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中多态性的Private与final

如果最后一个修饰符也禁止对Java中的方法进行修改,那么为这些方法使用私有访问修饰符的目的到底是什么

Java语言规范明确指出:

A method can be declared final to prevent subclasses from overriding or hiding it.

那么为什么不简单地将一个方法标记为final呢


共 (2) 个答案

  1. # 1 楼答案

    区别在于如何影响代码维护

    私有方法对于子类是不可见的,它们不是公开接口的一部分。这意味着超类可以自由地更改这些方法,而不必担心影响将其子类化的代码。在某些情况下,私有方法会被影响子类的更多公共方法调用,但是保持私有的越多,就需要移动代码的范围就越大

    如果您将方法设置为final而不是private,那么子类可以直接调用它,并且您必须确保您需要对其进行的任何更改不会导致子类的中断

    如果您的类是其他人使用的项目的一部分,那么您不知道谁在使用您的超类的哪些方法,因此您可能会遇到这样的情况,即一旦暴露,您就无法安全地更改任何对象的行为。最好尽可能地保持隐私

  2. # 2 楼答案

    私有修饰符和final关键字是不同的东西,有不同的用途

    Private是访问修饰符。只有同一类中的代码才能调用私有方法或访问私有字段。Final是一个关键字,用于定义只能分配一次的实体

    最后一个字段的值永远不能更改。但它可以被任何其他类阅读。所以,如果您不希望它被其他类读取,那么可以将其设置为private字段

    私有字段的值可以更改,但不能由其他类更改,只能由它所属的类更改。如果您不想更改它,则可以将其设置为最终字段

    方法也是如此。私有方法对其他类不可见,这就是为什么不能重写它。这里的主要目标是防止其他类访问

    最后一个方法不能被重写,但它对其他类可见

    我认为这是主要的区别