Java修饰符与关键字学习笔记
修饰符
权限修饰符分为四种,私密度由高到低为private,默认,protected,public;
private
只能在同一类中访问
使用场景:只在当前类中使用,不允许外部访问;当前类调用此方法的方法可以为public;工具类的构造方法一般设为private
注意:继承关系中private修饰的不会被继承;不能修饰类
默认
在同一类中可以访问;在同一个包下的不同子类之间也可以访问;
使用场景:
注意:可以用来修饰类
protected
在上述基础上,也能够访问不同包的子类;
使用场景:希望子类能够重写此方法
public
在上述基础上,不同包的无关类也能够访问(都可以访问)
使用场景:外界需要调用此类中的此方法进行访问
关键字final
final关键字修饰后,后面不能再被修改。
final修饰方法:此方法不能再被重写
final修饰变量:常量,此变量不能再被赋值(若修饰引用类型变量,则引用地址不能改变,但是内容可以改变)
final修饰类:此类不能被继承
关键字abstract
只能用来修饰类和接口以及类中的成员方法。
被修饰的类或接口不能被实例化,只能被继承,被修饰的成员方法必须在子类中重写
使用场景:用来写一个在很多场景下会用的整体类(例如动物作为抽象类,其下要写很多猫狗等动物的类,此时不同的类都会有相同的方法,因此可以提取出一个抽象类出来)
关键字static
静态,可修饰成员方法,成员变量;
修饰的特点:被当前类所有对象共享;可通过类名调用(修饰方法时,不用再new出对象,直接使用类名调用方法)
static访问特点:静态成员方法只能访问静态的成员变量及成员方法;非静态的都可访问
编写工具类时常用关键字对成员变量及方法进行修饰。在不同处调用时可以用到同一个数据。
例子:
在编写ThreadLocal工具类时,在工具类中用static修饰成员变量,成员变量为一个ThreadLocal,则在不同方法中调用此工具类,能够实现在同一个ThreadLocal中进行存取。
Class ThreadLocalUtil(){
private static ThreadLocal<?> threadLocal = new ThreadLocal<>();
public static Object get(){
return threadLocal.get();
}
public static void set(Object obj){
threadLocal.set(obj);
}
public static void remove(){
threadLocal.remove();
}
在调用时,直接调用此类即可,要记得在用完threadLocal后执行remove操作,set之前也可进行remove防止内存泄漏。