Java 修饰符

2022-08-05  本文已影响0人  Tinyspot

1. 访问修饰符

修饰符 本包 子孙类 其他包
public Y Y Y
protected Y Y
default Y
private

2. static 修饰符

static 可以修饰变量、方法和代码块

2.1 静态属性(类属性)

静态属性存在方法区
静态成员是全类所有对象共享的成员

2.2 静态方法(类方法)

2.3 静态代码块

类加载时,触发静态代码块的执行(仅一次)
执行地位:静态属性初始化之后
作用:可为静态属性赋值,或必要的初始行为

3. final 修饰符

final表示不可改变
final 可以修饰类、方法和变量,称为最终类、最终方法、常量

3.1 最终类

final 修饰类:此类不能被继承。例如 String, Math, System

3.2 最终方法

final 修饰方法:此方法不能被重写,可以被继承

3.3 常量

final 修饰变量:此变量值不能被改变(常量)
常量类型:静态常量、成员常量、局部常量、基本类型常量和引用类型常量

成员常量
成员常量不再提供默认值,必须手动赋初始值
赋值时机:显示初始化或构造方法
注意:如果在构造方法中为实例常量赋值,必须保证所有的构造方法都能对其正确赋值

public class Animal {
    private final String name;
    public Animal() {
        this.name = "Bob";
    }
    public Animal(String name) {
        this.name = name;
    }
}

静态常量
静态常量不再提供默认值,必须手动赋初始值
赋值时机:显示初始化或静态代码块

public class Animal {
    private static final String NAME = "";
    static {
        // NAME = "";
    }
}

特殊:对象常量
final 修饰基本类型:值不可变
final 修饰引用类型:地址不可变(只保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变)

public static void main(String[] args) {
    final int num = 10;
    // num = 30; // Cannot assign a value to final variable 'num'

    final int[] nums = new int[]{1, 2, 3};
    // nums = new int[5]; // 指向一个新的数组,不可以
    nums[0] = 11; // 修改数组里的元素是可以的

    final Person person = new Person();
    // person = new Person();  // Cannot assign a value to final variable 'person'
    person.setName("xing");
}

其他:
'static' method declared 'final' :将一个方法声明为final,是防止该类被子类重写。但是static方法本身就不可被重写

3.3 final, finally, finalize

4. abstarct 修饰符

上一篇 下一篇

猜你喜欢

热点阅读