Java
权限访问修饰符 亲测总结
1.类成员(包括:变量、静态变量、构造器、方法、静态方法、成员类;不包括:代码块、静态代码块)修饰符:private default protect public
访问修饰符 |
同一个类
|
同包,子类
| 同包,非子类 | 不同包,子类 | 不同包,非子类 |
private | √ | ||||
default(friendly) | √ | √(不用创建直接继承) | √(需创建再用) | ||
protected | √ | √(不用创建直接继承) | √(需创建再用) | √(不用创建直接继承) | |
public | √ | √(不用创建直接继承) | √(需创建再用) | √(不用创建直接继承) | √(需创建再用) |
2.外部类修饰符:private default public abstract final
default:同一个包中可见
public:所有包所有类可见
abstract:抽象类
final:不可以被继承
(static:成员内部类,
用他修饰后,就成了静态内部类了,并且
可以当做普通类使用(先import外部成员),而不用先实例化一个外部类。)
3.接口修饰符:default public
public:所有包可见
default:只能同一个包中可见
(1.
接口的变量总是需要定义成:public static final 类型 名称,但可以不用写的这么复杂,默认就是public static final
2.接口的方法只能使用public、abstract修饰。
)
4.成员方法的修饰符:
①.普通类成员方法
public(公共控制符)
private(私有控制符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)
protected(保护访问控制符)指定该方法可以被它的类和子类进行访问。
final,指定该方法不能被重载。
static,指定不需要实例化就可以激活的一个方法。
synchronize,同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。
native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。
②.抽象类成员方法
abstract 修饰抽象的方法
public 普通公开方法
default
普通包内方法
protected
(1.抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。
2.抽象类除了包含抽象方法外与普通类无区别。)
③.接口成员方法
只能 public abstract修饰,并且abstract可以省略不写。
(1.接口中的方法全部是抽象方法(但其前的abstract可以省略),所以抽象类中的抽象方法不能用的访问修饰符这里也不能用。
2.而且protected访问修饰符也不能使用,因为接口可以让所有的类去实现(非继承),不只是其子类,但是要用public去修饰。
3.属性默认public static final修饰,即没有对象属性,且必须赋初值。)