访问控制权限
1.访问控制权限都有哪些?4个
- private:私有
- protected:受保护
- public:公开
- 默认
package se.control;
public class User {
//给一些属性
//私有的
private int id;
//受保护的
protected int age;
//公开的
public int weight;
//什么也没有,默认
String name;
}
package se.control;
public class Test01 {
public static void main(String[] args) {
User user = new User();
//private修饰的元素只能在本类中使用
//System.out.println(user.id);报错,id是private修饰的,访问不了
System.out.println(user.age);
System.out.println(user.weight);
System.out.println(user.name);
}
}
package se.control2;//换了个包
import se.control.*;
public class Test02 {
public static void main(String[] args) {
User user = new User();
//报错,protected在这里不行
//System.out.println(user.age);
System.out.println(user.weight);//可以,公开的,在哪都行
//报错,默认在这里也不行
//System.out.println(user.name);报错
}
}
package se.control3;//包又变化了
import se.control.User;
/*
User在se.control包下
Vip在se.control3包下
user和Vip不在同一个包下
但是Vip是User的子类
*/
public class Vip extends User {
//实例方法
public void shopping(){
//this表示当前对象
//protected可以
System.out.println(this.age);
//System.out.println(this.name);报错,默认不行
}
}
2.控制的范围
private:表示私有的,只能在本类中访问
public:表示公开的,在任何位置都可以访问
“默认”表示只能在本类以及同包下访问
protected表示只能在本类、同包、子类中访问
以上用一张表来概括如下:
访问控制修饰符 | 本类 | 同包 | 子类 | 任意位置 |
---|---|---|---|---|
public | 可以 | 可以 | 可以 | 可以 |
protected | 可以 | 可以 | 可以 | 不行 |
默认 | 可以 | 可以 | 不行 | 不行 |
private | 可以 | 不行 | 不行 | 不行 |
范围从大到小排序:public > protected > 默认 > private
3.访问控制权限修饰符可以修饰什么?
- 属性(4个都能用)
- 方法(4个都能用)
- 类(public和默认都能用,其他不行)
- 接口(public和默认都能用,其他不行)
- …