java非访问修饰符
修饰符 | 类 | 变量 | 方法 |
abstract | 抽象类 | 抽象方法 | |
final | 最终类 | 最终变量 | 最终方法 |
static | 静态变量 | 静态方法 | |
volatile | 易失变量 | ||
native | 本地方法 | ||
synchronized | 同步方法 |
A:类的修饰符:abstract、final
Ø 凡是用abstract修饰的类被称为抽象类,就没有具体对象的概念类,不能被实例化(不能有new关键字创建对象);
定义抽象类的基本格式:
类名{
}
Ø 若一个类被final修饰和限定,说明该类不可能有子类;被final修饰符修饰的类通常情况下都是一些有固定作用、用来完成某种特定功能的类。
Abstract和final不能同时修饰同一个类,因为被abstract类自身不具有任何对象,需要其子类来创建对象;而final类不可能有子类。
定义一个最终类的基本形式:
类名{ }
B:变量修饰符 static 、final、 volatile
Ø 用static修饰的变量属于类的静态变量。静态变量是类中每个对象共享的变量,不属于任何一个类的具体对象,是一个公共的存储单元。
定义一个静态变量: static 数据类型 变量名 = 变量值
静态变量的引用:通过类名直接访问。
Ø 静态初始化器时由static引导的一对大括号中的语句组。其作用是加载时,初始化类的静态变量。与构造方法相同,都是用来完成初始化工作。
Ø 静态初始化器与构造方法的三个不同点
l 构造方法是对每个新创建对象的初始化,而静态初始化器是对类自身初始化
l 构造方法是在用new关键字产生新对象是又系统自动执行,而静态初始化器则是在它所属的类加载到内存时由系统调用执行
l 静态初始化器不是方法,因为它没有方法名、返回值和参数列表;
Ø 最终变量:final,java中用final修饰的变量实际上就是常量。
在使用final定义常量时要注意以下几点:
l 需要说明常量的数据类型
l 需要同时指明常量的具体取值
l 由于所有类的对象的常量其值都是固定的,通常将常量声明为static,这样做是为了节约内存空间
final 数据类型 常量名 = 常量值或
static final 数据类型 常量名 = 常量值
Ø 易失变量:volatile 如果一个变量被该关键字修饰,那就说明这个变量同时被几个线程所控制和修改;它通常用来修饰外部输入的变量。
C:方法修饰符:abstract、static、final
Ø 抽象方法:abstract 用该关键字修饰的方法只有方法头,而没有具体的方法体和操作实现的方法。
l 使用抽象方法的目的:是使所有子类对外都呈现一个相同名字的方法,是 一个统一的接口。
l 所有的抽象方法都必须存在抽象类之中。
l 抽象方法基本格式:
public abstract class 类名 {
public abstract void 方法名();
}
Ø 静态方法:static 用该关键字修饰的方法属于整个类的方法,不同是的对象或实例的方法。
l 调用这种方法时,使用类名做前缀;
l 这种方法在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有,只能处理属于整个类的成员变量。
l 静态方法的基本格式:
public static void 方法名(){
System.out.println("这是一个静态方法");
}
l 静态方法的调用方式:类名▪方法名
Ø 最终方法:final 该关键字用来修饰类的方法,表示功能和内部语句不能再更改的方法,不能被继承。
l 最终方法的基本格式:
public final void 方法名(){
System.out.println("这是一个最终方法,不能被重写");
}
Ø 同步方法:synchronized
l 该关键字如果修饰的方法是一个类方法,那么在被调用执行前,将把系统类Class中对应当前类的对象加锁
l 若修饰的是一个对象的方法,则在这个方法调用执行前,将把当前对象加锁。
该关键字主要是用于多线程共存的程序中的协调和同步。