java基础02-修饰符
文章目录
一、访问权限修饰符
| 类 | 包 | 子类 | 任意 | |
|---|---|---|---|---|
| public | ✔ | ✔ | ✔ | ✔ |
| protected | ✔ | ✔ | ✔ | |
| [default] | ✔ | ✔ | ||
| private | ✔ |
二、abstract修饰符
abstract可以用来修饰类或者方法。被abstract修饰的类为抽象类,被abstract修饰的方法为抽象方法。
抽象类一般会包含抽象方法(也可以不包含)且不能被实例化。抽象方法一定位于抽象类中(也可位于接口中),抽象方法不能有实现,需由子类继承重写实现(接口中的抽象方法从java8开始可以有默认的实现)。
接口中的方法都是public abstract修饰,字段都是public static final 修饰
三、final修饰符
-
final修饰的类不能被继承。
-
final修饰的方法不能被子类重写。private 方法隐式地被指定为 final。如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法
-
final修饰的字段:
基本类型:final 使数值不变。
引用类型:引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。
四、static修饰符
1. 静态变量
-
静态变量: 又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它;静态变量在内存中只存在一份。
-
实例变量: 每创建一个实例就会产生一个实例变量,它与该实例同生共死。
2. 静态方法
静态方法在类加载的时候就存在了,它不依赖于任何实例。所以静态方法必须有实现,也就是说它不能是抽象方法,方法中不能有 this 和 super 关键字。
3. 静态语句块
静态语句块在类初始化时运行一次。
|
|
4. 静态内部类
非静态内部类依赖于外部类的实例,而静态内部类不需要。静态内部类不能访问外部类的非静态的变量和方法。
|
|
5. 初始化顺序
静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代码中的顺序。存在继承的情况下,初始化顺序为:
父类(静态变量、静态语句块)
子类(静态变量、静态语句块)
父类(实例变量、普通语句块)
父类(构造函数)
子类(实例变量、普通语句块)
子类(构造函数)
文章作者 necor 上次更新 2024-02-01