final关键字

tech2022-12-07  87

/* final 关键字代表最终、不可改变的 常见的四种用法: 1.可以修饰一个类 2.可以修饰一个方法 3.可以修饰一个局部变量 4.可以修饰一个成员变量 */ /* 当final 关键字用来修饰一个类的时候,格式: public final class 类名称{ //... } 含义:当前这个类不能有任何的子类。(太监类) 注意:一个类如果是final的,那么其中所有的成员方法无法进行覆盖重写(因为没儿子) */ public final class MyClass{ public class method(){ System.out.println("方法执行"); } } /* 当final 修饰一个方法时,这个方法就是最终方法,也就是不能被覆盖重写 格式: 修饰符 final 返回值类型 方法名称(参数列表){方法体} 注意: 对于类、方法来说,abstract 关键字和final 关键字不能同时使用,因为矛盾。 */ public final class Fu{ public class method(){ System.out.println("父类方法执行"); } } public class Zi extends Fu{ //父类方法final 修饰,子类无法覆盖重写 //@override //public class method(){ // System.out.println("子类覆盖重写父类的方法"); //} } public class Demo01Final{ public static void main(String[] args){ int num1 = 10; System.out.println(num1); // 10 num1 = 20; System.out.println(num1); // 20 //一旦使用final 修饰局部变量,那么这个变量就不能更改。 //“一次赋值,终生不变” final int num2 = 200; System.out.println(num2); //200 // num2 = 250; 错误写法,不能改变 //正确写法,只要保证有唯一一次赋值即可。 final int num3; num3 = 30; } }

对于基本类型来说,不可变说的是变量当中的数据不可改变。 对于引用类型来说,不可变说的是变量当中的地址值不可改变。

/* 对于成员变量来说,如果使用final关键字修饰,那么这个变量也不可变。 1.由于成员变量具有默认值,所以用了final 之后必须手动赋值,不会再给默认值 2.对于final 的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。 3.必须保证类中所有重载的构造方法,都最终会对final 的成员变量进行赋值。 */
最新回复(0)