java final关键字
一、种类
1、类
2、方法
3、局部变量
4、成员变量
二、类
1、作用
将该类变成最终类,不能被继承(太监类)
注意:该类的方法不能被overrider
2、语法
修饰符 final class 类名{}
3、例子
1 package cn.wt.day11; 2 3 public final class Person { 4 5 public void show(){ 6 System.out.println("我是一个人"); 7 } 8 }
1 package cn.wt.day11; 2 // 继承报错 3 public class Student extends Person { 4 }
三、方法
1、作用
将该方法变成最终方法,不可以被overrider
2、语法
修饰符 final 返回值类型 方法名称(参数列表){ 方法体 }
3、注意
final和abstract不能共存。原因:final不能overrider,而abstract一定要overrider
4、例子
1 package cn.wt.day11; 2 3 public class Person { 4 5 public final void show(){ 6 System.out.println("我是一个人"); 7 } 8 }
1 package cn.wt.day11; 2 3 public class Student extends Person { 4 // override 报错 5 @Override 6 public void show() { 7 8 } 9 }
四、局部变量
1、分类
基本数据类型:变量的值不变
引用数据类型:变量的储存地址不变
2、语法
final 基本数据类型 变量名 = 值;
final 引用数据类型 对象名称 = new 引用数据类型()
3、例子
基本数据类型
package cn.wt.day11; public class Demon { public static void main(String[] args) { final int num = 10; // 基本数据类型赋值报错 num = 30; } }
引用数据类型
package cn.wt.day11; public class Demon { public static void main(String[] args) { final Person person = new Person("黄蓉"); System.out.println(person); System.out.println(person.getName()); person.setName("郭靖"); System.out.println(person); System.out.println(person.getName()); } }
五、成员变量
1、注意
成员变量一定要赋值,原因:成员变量有默认值,若不复制的话,使用final后,变量的值就无法改变,那么这个变量就没原因
2、语法
修饰词 final 变量名称 = 值;
注意:也可以通过构造方法赋值,但不常用