一、访问修饰符
(1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问;
(2)protected: 用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承了该类的子类才能访问
(3)default: 如果一个类、类属变量及方法没有用任何修饰符,则其访问权限为default(默认访问权限)。
默认访问权限的类、类属变量及方法,包内的任何类(包括继承了此类的子类)都可以访问它。
(4)private: 用private修饰的类、类属变量及方法,只有本类可以访问,而包内包外的任何类均不能访问它。
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同的包 |
公开 | public | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | -- |
默认 | 没有访问控制修饰符 | √ | √ | -- | -- |
私有 | private | √ | -- | -- | -- |
二. final关键字
final关键字可以用来修饰类、方法和变量
1、修饰类
当用final修饰一个类时,表明这个类不能被继承。
2.修饰方法
当用final修饰一个方法时,表明这个方法不能被覆盖。
3.修饰变量
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
三、synchronized
代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。它包括两种用法:synchronized 方法和 synchronized 块。
比如:
public synchronized void test(){
.........
}
public void test(){
synchronized(Main.class){
.........
}
}