JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Java中的final关键字 java里的final关键字

wys521 2024-10-30 05:56:22 精选教程 27 ℃ 0 评论

我们都知道,Java是面向对象的语言,而面向对象有一种思想就是继承。但是有时候,出于某种原因,我们不希望我们的类、方法或者变量被继承或重写,这个时候,我们就需要final关键字来帮助我们达到这种效果。

final 类

当使用final关键字来标记一个类,则表示该类不能被继承。例如我们经常使用的String类就被标记为final,表明String类不能够继承。设想一下,如果我们可以继承 String 类,重写它的任何方法,并用特定 String 子类的实例替换所有 String 实例,那么对 String 对象进行操作的结果将变得不可预测。 而且考虑到到处都在使用 String 类,因此这种继承是不可接受的。 这就是为什么 String 类被标记为 final。

final 方法

被标记为final的方法是不能被重写的。当我们设计一个类并且认为一个方法不应该被重写时,我们可以将这个方法标记为final。有时候,我们并不想把我们的整个类都标记为final,我们只是希望它其中的部分方法不被重写就可以,这个时候,我们可以使用final关键字来修饰该方法。如我们的Thread类本身并不是final的,但是getName()方法是final的。


final 变量

被标记为final的变量是不能被重新赋值的。一旦final变量被初始化,就不能被修改。

final类型修饰的变量分为以下几种情况:

  • 原始类型的final变量,例如int,long,double等,一旦初始化,是不能被修改的,否则编译器会报错。
  • 引用类型的final变量,例如我们自定义一个final 类型的Person对象,虽然Person对象本身不能被修改,但是我们还是可以通过person.setName("chris");方法来修改Person中name的属性值。
  • final类型的变量要么是常量字段,即声明的时候就赋一个常量值,要么只能被赋值一次,之后不能被修改。如我们通常会在一个类中声明一个final类型的成员变量,然后在构造方法中将该成员变量初始化一次,有些地方将这种final变量叫做final blank(final 空白)。
  • final类型的形式参数。有时候,我们会把一个方法的形参设置为final的,譬如:
public void setName(final String name) {
    this.name = name;
}

这表明我们不希望该形参在方法内被修改。

总结

在本文中,我们了解了final的一些常用用法,例如final变量可以用来修饰类,方法,变量等,这在有些情况下对我们的代码设计很有帮助。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表