什么是访问修饰符
访问修饰符理解为权限控制 用来限定作用域的
修饰符分类
- public: 对所有类都可见
- protected: 对同一包内的类和所有子类可见 注意:不能修饰类(外部类)
- private: 只能在当前类中使用 注意:不能修饰类(外部类)
- default(即默认 什么都不写): 在同一包中可见
访问控制
修饰符 | 当前类 | 同一包中 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N | N |
private | Y | N | N | N | N |
default | Y | Y | Y | N | N |
private
定义为 private
的field丶method
无法被其他类访问 只能在本类中使用private
不能修饰外部类!!!
package com.oop.demo04;
public class Demo02 {
private String name;
}
package com.oop;
import com.oop.demo04.Demo02;
public class Applcation {
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
// 'name' has private access in 'com.oop.demo04.Demo02'
// System.out.println(demo02.name);
// 'say()' has private access in 'com.oop.demo04.Demo02'
// System.out.println(demo02.say());
}
}
public
定义为public
的class丶interface丶field丶method
可以被任何类访问 权限最大
小结
-
public
权限最大 任何类都可以访问 -
private
权限最小 只能在本类中访问 且不能修饰外部类 一般用于字段和方法上 -
default
只要在同一个包中即可访问 -
protected
作用于继承关系 定义为protected
的字段和方法可以被子类访问 以及子类的子类