final
1.final是java语言中的一个关键字
2.final表示最终的,不可变的
3.final可以修饰变量以及方法,还有类等
final class A{
}
class B extends A{
}
有final修饰的类不能被继承
class A {
public final void Do(){
System.out.println("A do");
}
}
class B extends A{
public void Do() {
System.out.println("B do");
}
}
final修饰的方法无法被覆盖,无法被重写
final int i = 100;
i = 200;
final修饰的局部变量,只能赋一次值
public class test {
public static void main(String[] args) {
final Person p = new Person(30);
p = new Person(20);
}
}
class Person{
int age;
public Person(){
}
public Person(int age){
this.age = age;
}
}
final Person p = new Person(30);
p.age = 25;
System.out.println(p.age);
}
}
class Person{
int age;
public Person(){
}
public Person(int age){
this.age = age;
}
}
final修饰的引用:该引用只能指向一个对象,并且它只能永远指向该对象,无法再指向其他对象。并且在该方法执行过程中,该引用指向对象之后,该对象不会被垃圾回收器回收,直到当前方法结束,才会释放空间
虽然final的引用指向对象A后,不能再重新指向对象B,但是对象A内部的数据可以被修改
public class FinalTest04 {
public static void main(String[] args) {
}
}
class Chinese {
String idCard;
String name;
static final String country = "中国";
}
static final修饰的变量称为“常量”
实际上常量和静态变量一样,区别在于常量的值不能变, 常量和静态变量,都是存储在方法区,并且都是在类加载时初始化
final修饰的实例变量,系统不会赋默认值,要求必须手动赋值。这个收到赋值,在变量后边赋值可以,在构造方法中赋值也可以。