被final修饰的变量、方法和类的特点

0 阅读1分钟

final修饰变量:不能被二次赋值

需要注意以下3点:
1、被final修饰的变量不允许二次赋值; 2、但如果final修饰的数组或者自定义对象,是允许修改数组内元素或者自定义对象的属性值的(非final修饰的); 3、另外还需要注意的是,final修饰的变量是不允许二次赋值,不是不能赋值,如果变量初始化和赋值单独成行是允许的

public static void main(String[] args) {
    final String str = "final修饰的变量";

    // 1.被final修饰的变量不允许二次赋值
    //str = "赋值";
    //str = null;

    // 2.但如果final修饰的数组或者自定义对象,是允许修改数组内元素或者自定义对象的属性值的(非final修饰的)
    final int[] array = {1, 2, 3, 4, 5, 6};
    array[1] = 0;
    // 不允许
    //array = null;

    final Student s = new Student("张三", 20);
    s.setAge(30);
    // 不允许
    //s = null;

    // 3.另外还需要注意的是,final修饰的变量是不允许二次赋值,像下面这样的情况是允许的
    final int sum;
    sum = add(1, 3);
}

public static int add(int a, int b) {
    return a + b;
}
public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

final修饰方法:不能被覆写

public class Test extends Super{
    public static void main(String[] args) {
        
    }
    // 子类不允许覆写父类被final修饰的方法
//    public static void sonFunction(){
//        
//    }
}
class Super{
    public final void sonFunction(){
        System.out.println("子类方法");
    }
}

final修饰类:不能被继承

// 不能继承被final修饰的类
public class Test extends Super{
    public static void main(String[] args) {

    }
}

// 被final修饰的类
final class Super{

}

首次发布

hezhongying.blog.csdn.net/article/det…