版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenbetter1996/article/details/87918028
Java修饰符
修饰符很多,可以分为访问控制修饰符和非访问控制修饰符。(以下在JDK1.8所测)
有 public、private、protected、缺省、static、final、synchronized、abstract…
①访问控制修饰符
访问控制修饰符就4个
修饰符 | 说明 |
---|---|
public | 对所以累可见。可使用在:类、接口、方法、变量。 |
private | 在同一个类可见。可使用在:方法、变量。 不能修饰类和接口 |
protected | 对统一保内的类和所有子类或同包可见。可使用在:方法、变量。 不能修饰类和接口 |
default(缺省) | 也就是什么都不写,不是写default,没有default这种修饰词,同一包可见。可使用在: 类、接口、方法、变量。 |
相比protected,一样修饰在方法和变量中的default(缺省)虽然在同一包内都没有问题。但是区别在,protected修饰的子孙类在不同包也可以访问。而缺省不行。
②非访问控制修饰符
修饰符 | 说明 |
---|---|
static | 可使用在:方法、变量。 不能修饰类和接口 |
final | 可使用在:类、方法、变量。 不能修饰接口 |
abstract | 可使用在:类、方法、接口(在接口上是多余的) 不能修饰变量 |
synchronized | 只可以使用在方法或者语句块 |
… | … |
1. 类 class
类的修饰符包括缺省情况总共4种。不能使用protected、private、static...
修饰符 | 说明 |
---|---|
public | 可以被其他类访问、实例化、继承等 |
abstract | 抽象类,可能有抽象方法,这种类不能被实例化 |
final | 这个类不能被继承 |
缺省 | 同包下可以访问各种操作 |
Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。
- final类不能被继承,没有子类,final类中的方法默认是final的。
- final方法可以重载,但是不能被子类的方法重写。
- final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
2. 接口 interface
接口的修饰符包括缺省总共3个,不能使用protected、private、static、final..
修饰符 | 说明 |
---|---|
public | 所以类、接口可见 |
abstract | 多余的,默认接口就是包含了abstract |
缺省 | 同一个包可见 |
3. 方法 method
方法修饰符很多
修饰符 | 说明 |
---|---|
public | 可以从所以类访问该方法 |
protected | 自己和子类或同包可见 |
private | 只能本类访问该方法 |
abstract | 抽象方法,没有方体,属于一个抽象类或者接口(接口的方法默认就是抽象方法) |
final | 子类不能重写覆盖该方法,这个不能是抽象方法。必须有方法体 |
static | 静态方法 ,修饰接口方法必须要有方法体 |
synchronized | 同步方法 |
native | Java底层原生方法,一般由汇编或者C写的 |
缺省 | 同一个包可见 |
注意:
- 接口中的方法不能使用final声明。final声明的都是完整的东西。
- 一些修饰符是可以叠加的,比如 public static final void test() { }
- 接口的方法和变量都不能使用protected声明,可以用static声明(1.8以后接口可以有方法体)
对于构造函数这种特殊方法,只能使用三个修饰符
修饰符 | 说明 |
---|---|
public | 所有类可见 |
protected | 自己和子类或同包可见 |
private | 只能本类 |
4. 变量 variable
变量的修饰符很多,但是不能使用abstract
修饰符 | 说明 |
---|---|
public | 任何类可见 |
protected | 自己和子类或同包可见 |
private | 本类可见 |
static | 静态变量 |
final | 常量 |
缺省 | 同包可见 |
接口中的变量默认就是 public static final声明的了。也就是 int N = 1; <=> public static final int N = 1;