1 概念
final关键字代表最终、不可改变的。一般用来修饰以下五种: 1. 修饰类 2. 修饰方法 3.修饰成员变量 4.修饰局部变量 5.修饰常量
2 final修饰类
1)语法 public final class 类名称 { ... }
eg.
public final class FinalClass {
}
2) final修饰的类不能有任何的子类
3)注意:一个类如果是final修饰的,那么其中所有的成员方法都无法进行覆盖重写
3 final修饰方法
1)语法
修饰符 final 返回值类型 方法名称(参数列表) { // 方法体 }
eg:
public final void sendMessage(){
System.out.println("发送消息");
}
2) 注意
abstract关键字和final关键字不能同时使用,
因为矛盾。有抽象方法的abstract类被继承时,其中的方法必须被子类Override,而final不能被Override。
public abstract class FinalClass {
public final void sendMessage(){
System.out.println("发送消息");
}
public abstract void call();
}
public class SonClass extends FinalClass {
@Override
public void call() {
}
}
4 final修饰成员变量
1)对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变的
2)由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值。
3)对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。
a)
public abstract class FinalClass {
private final String name="curry";
public final void sendMessage(){
System.out.println("发送消息");
}
public abstract void call();
}
b)
public abstract class FinalClass {
private final String name;
public FinalClass(String name) {
this.name = "curry";
}
public final void sendMessage(){
System.out.println("发送消息");
}
public abstract void call();
}
5 final修饰局部变量
1) 一旦用final修饰基本类型变量 那么这个变量值就不能修改
2)若用final修饰引用类型变量,地址值不可改变,否则报红
6 修饰常量
一般修饰不可改变的常量
final double PI=3.14;