1.static修饰符
- 静态变量:独立于类的一个静态变量,不论实例化多少个对象,它的静态变量只有一份拷贝,静态变量也被称为类变量。局部变量不能被声明为
static 变量。 - 静态方法:static用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得倒数据,然后计算这些数据。
package moeh.www;
public class MoHe {
public static int number = 0;
static int GetNum() {
return number;
}
void AddNumber() {
number++;
}
MoHe() {
AddNumber();
}
public static void main(String[] args){
System.out.println("数字开始的值为:" + MoHe.GetNum());
for (int i = 0; i < 100; i++) {
new MoHe();
}
System.out.println("数字开始的值为:" + MoHe.GetNum());
}
}
结果展示:
也就是说new了100次,变量也会增加一百次。
2.final修饰符
final表示"最后的,最终的"含义,变量一旦被赋值后,不能被重新赋值。被final修饰的实例变量必须显式指定初始值。
- final变量:final通常和static一起用于创建常量。
- final方法: 父类中的final方法可以被子类继承,但不能被子类重写。final方法的主要目的是防止该方法的内容被修改。
- final类:final类不能被继承,没有类能够继承final的任何特性。
3.abstract 修饰符
- 抽象类:抽象类不能用来实例化对象,声明抽象类的目的就是为了将来对该类进行扩充。一个类不能同时被abstract和final修饰[一个可以被继承,一个不可以被继承,冲突了]。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则会报错。
抽象类内可以声明抽象方法和非抽象方法。 - 抽象方法:抽象方法是一种没有任何实现的方法,方法的具体实现由子类提供。
(1)抽象方法不能用static和final修饰
(2)任何继承抽象的子类必须实现父类的所有抽象方法,除非子类也是抽象类。
(3)如果一个类包含若干个抽象方法,那么该类必须声明为抽象类,抽象类可以包含非抽象方法。
这里提一下,这一个方法和C++里面的虚函数和纯虚函数有一点相似。
虚函数:实现一种动态联编的方法,让程序可以申请父类指针,但是可以根据用户的输入或者其他的判断条件,决定是否使用父类的方法还是子类的方法。
纯虚函数:也就是没有任何实现的方法,子类除非也是抽象类,不然就必须要实现这一个方法。
4.synchronized 修饰符
synchronized 关键字声明的方法同一时间只能被一个线程访问
5.volatile 修饰符
这一修饰符主要应用在线程之中。
volatile修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
参考链接:菜鸟教程.