/** * final关键字代表最终的,不可改变的. * 常见四种用法 * 1:可以用来修饰一个类; * 2:可以用来修饰一个方法; * 3:可以用来修饰一个局部变量; * 4:还可以用来修饰一个成员变量; */ public class Final001 { public static void main(String[] args) { MyZi myzi = new MyZi(); myzi.sleep3(); Variable variable = new Variable(); variable.look(); } } /** * 当final修饰一个类的时候; * 格式: * public final class 类名称{ * ..... * } * 注意:当final修饰一个类的时候,当前这个类不能有任何子类. * 其中的所以成员方法都不能覆盖重写(因为没有子类). */ final class myClass{ public void sleep(){ System.out.println("正在睡觉"); } } /** * 当final修饰一个方法的时候; * 格式: * 修饰符 final 返回值类型 方法名称(参数列表){ * ....方法体 * } * 1:这个方法是最终方法,也就是不能被覆盖重写. */ class MyFumy{ public final void sleep2(){ System.out.println("睡觉"); } public void sleep3(){ System.out.println("睡觉"); } } class MyZi extends MyFumy{ // 错误写法,不能进行覆盖重写 // public void sleep2(){ // System.out.println("必须睡觉"); // } public void sleep3(){//没有final修饰,所以可以覆盖重写 System.out.println("必须睡觉"); } } /** * 可以用来修饰一个局部变量; * 那么这个局部变量是不能进行改变的(一次赋值,终身不变); *1:对于基本数据来说,不可变的是变量当中的数据不可改变. *2:对于引用类型来说,不可变的是变量当中的地址值不可改变. */ class Variable{ public void look(){ int mun = 10; System.out.println(mun);//输出为10; mun = 20; System.out.println(mun);//输出为20; final int mun2 = 50; System.out.println(mun2);//输出为50; //mun2 = 60;错误写法,直接报错. } } /** * 还可以用来修饰一个成员变量; * 1:由于成员变量有默认值,所以用来final后要进行手动赋值,不会在给默认值了; * 2:对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值.(二者选其一); * 3:必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值; */ class Person{ // private final String name = "大黄"; private final String name; public Person(){ name = "大骨头"; } public Person(String name) { this.name = name; } public String getName() { return name; } // public void setName(String name) {通过构造方法赋值,去掉set方法. // this.name = name; // } }
Java中的final关键字
最新推荐文章于 2024-07-07 11:22:25 发布