Java中的最后一个类和底层结果

Java中的最后一个类和底层结果,java,stringbuilder,final,Java,Stringbuilder,Final,我在某处听到这句话,我无法忘怀: “final类的所有成员都是隐式final。” 现在,我非常清楚这三个著名的概念: 不能扩展最终类 final变量初始化后不能重新分配新值 无法重写final方法 但是,如果final类的所有成员(变量、方法)都是隐式final,那么我们就有了final类、final变量和final方法 那么,StringBuilder,尽管是最终版本,怎么可能允许其内容更改 类可以是最终的,但可以是可变的 类是final只是意味着不可能有子类,但不涉及类的行为 相反,字段和方

我在某处听到这句话,我无法忘怀:

“final类的所有成员都是隐式final。”

现在,我非常清楚这三个著名的概念:

  • 不能扩展
    最终
  • final
    变量初始化后不能重新分配新值
  • 无法重写
    final
    方法
  • 但是,如果final类的所有成员(变量、方法)都是隐式final,那么我们就有了final类、final变量和final方法


    那么,
    StringBuilder
    ,尽管是最终版本,怎么可能允许其内容更改

    类可以是最终的,但可以是可变的

    类是final只是意味着不可能有子类,但不涉及类的行为

    相反,字段和方法可以是final(和实例),但类不是final


    类和类成员的最终性是不相关的。

    类可以是最终的,但可以是可变的

    类是final只是意味着不可能有子类,但不涉及类的行为

    相反,字段和方法可以是final(和实例),但类不是final


    类和类成员的最终性是不相关的。

    类可以是最终的,但可以是可变的

    类是final只是意味着不可能有子类,但不涉及类的行为

    相反,字段和方法可以是final(和实例),但类不是final


    类和类成员的最终性是不相关的。

    类可以是最终的,但可以是可变的

    类是final只是意味着不可能有子类,但不涉及类的行为

    相反,字段和方法可以是final(和实例),但类不是final



    类和类成员的终结性是不相关的。

    该断言过于简单,因此是错误的。只有
    final
    类的方法才能隐式地考虑
    final
    。然而,这一事实在itslef中并不重要,因为
    final
    类的方法不能被重写,因为不存在任何子类。无论是隐式的还是显式的,它们是否是final都无关紧要。

    这个断言过于简单,因此是错误的。只有
    final
    类的方法才能隐式地考虑
    final
    。然而,这一事实在itslef中并不重要,因为
    final
    类的方法不能被重写,因为不存在任何子类。无论是隐式的还是显式的,它们是否是final都无关紧要。

    这个断言过于简单,因此是错误的。只有
    final
    类的方法才能隐式地考虑
    final
    。然而,这一事实在itslef中并不重要,因为
    final
    类的方法不能被重写,因为不存在任何子类。无论是隐式的还是显式的,它们是否是final都无关紧要。

    这个断言过于简单,因此是错误的。只有
    final
    类的方法才能隐式地考虑
    final
    。然而,这一事实在itslef中并不重要,因为
    final
    类的方法不能被重写,因为不存在任何子类。无论隐式还是显式,它们是否为final都无关紧要。

    final并不意味着不可变(例如,请参见
    ArrayList
    ),只有方法是隐式final的(因为它们只能被子类化覆盖,子类化被拒绝)。除非标记,否则变量将保持非最终值。您不能重写StringBuilder类中的任何方法,只能更改其文本内容,请注意差异。编写一些示例代码并运行它。通过这种方式,除了记住和在线学习之外,还可以学到更多的东西——如果有人真的这么说,老师也不是十全十美的。这是阿廷true@Dave:是的,一定是这样!难怪“最终”和“可变”不是相互排斥的!现在这是有道理的。它必须是唯一的方法,由于它们所属的最后一个类,所以本质上是最终的。final类不允许子类,没有子类就不能重写方法。final并不意味着不可变(例如,请参见
    ArrayList
    ),只有方法是隐式final的(因为它们只能通过子类化来重写,子类化被拒绝)。除非标记,否则变量将保持非最终值。您不能重写StringBuilder类中的任何方法,只能更改其文本内容,请注意差异。编写一些示例代码并运行它。通过这种方式,除了记住和在线学习之外,还可以学到更多的东西——如果有人真的这么说,老师也不是十全十美的。这是阿廷true@Dave:是的,一定是这样!难怪“最终”和“可变”不是相互排斥的!现在这是有道理的。它必须是唯一的方法,由于它们所属的最后一个类,所以本质上是最终的。final类不允许子类,没有子类就不能重写方法。final并不意味着不可变(例如,请参见
    ArrayList
    ),只有方法是隐式final的(因为它们只能通过子类化来重写,子类化被拒绝)。除非标记,否则变量将保持非最终值。您不能重写StringBuilder类中的任何方法,只能更改其文本内容,请注意差异。编写一些示例代码并运行它。通过这种方式,除了记住和在线学习之外,还可以学到更多的东西——如果有人真的这么说,老师也不是十全十美的。这是阿廷true@Dave:是的,一定是这样!难怪“最终”和“可变”不是相互排斥的!现在这是有道理的。它必须是唯一的方法,由于它们所属的最后一个类,所以本质上是最终的。最后一节课不允许学生参加