Java类、接口、方法、变量修饰符总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 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写的
缺省 同一个包可见

注意:

  1. 接口中的方法不能使用final声明。final声明的都是完整的东西。
  2. 一些修饰符是可以叠加的,比如 public static final void test() { }
  3. 接口的方法和变量都不能使用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;

猜你喜欢

转载自blog.csdn.net/chenbetter1996/article/details/87918028