java中final关键字

mac2022-06-30  23

final代表的是不可改变的,主要作用有四个:

修饰类

final修饰的类不能有子类所有的成员方法都不能覆盖重写abstract与final不能使用作用在一个类上

修饰方法

修饰的方法不能被覆盖重写abstract与final不能同时作用与一个方法上

修饰一个局部变量

只能赋值一次 public void method () { final int num = 10; // num = 20; 错误写法,只能赋值一次 final int num2; num2 = 100; // 正确写法,定义变量的使用没有赋值,后面可以赋值一次 } 对于基本类型来说,不可变说的是数据不可变对于引用类型来说,不可变说的是引用的地址值不可变。 public void method () { final Student s = new Student(); // s = new Student(); 这里是错误写法,因为更会了引用地址 s.setName("张三"); // 这里是正确写法,地址没有变,换的只是对象里面的值 }

修饰一个成员变量

对于成员变量来说,使用final关键字修饰,那么这个变量也是不可变的,但是有一点需要注意,就是成员变量是有默认值的,但是局部变量是没有默认值的。所以使用了final来定义一个成员变量的时候有两种赋值方式 直接在定义的时候赋值通过构造方法赋值上面两种方式是二选一,如果已经直接赋值,那么就不能使用构造方式来赋值。如果是有多个构造方法,必须保证每一个重载的构造方法都对final成员变量进行赋值 public class Person { private final String name; public Person() { this.name = "张三"} public Person(String name) { this.name = name; } }
最新回复(0)