基本介绍:
java提供的四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围)
1.公开级别:用public 修饰,对外公开;
2.受保护级别:用protected修饰,对子类和同一个包中的类公开;
3.默认级别:没有修饰符号,向同一个包中的类公开;
4.私有级别:private修饰,只有类本身可以访问,不对外公开;
访问修饰符的访问范围:
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同包 |
公开 | public | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | × |
默认 | 没有修饰符号 | √ | √ | × | × |
私有 | private | √ | × | × | × |
使用的注意事项:
1.修饰符可以用来修饰类中的属性,成员方法以及类;
2.只有默认和public可以用来修饰类;并且遵守上述访问权限的特点。
3.成员方法的访问规则和属性完全一样;
一.首先我们先验证同类下的运行
代码实现:
1. 首先我们定义A类来创造4个不同修饰权限的变量
package src.modifier;
/**
* @auther mhqstart
* @create 2022-01-19 11:17
*/
public class A {
//四个属性,分别使用不同的访问修饰符来修饰
public int n1 = 100;
protected int n2 = 200;
int n3 = 300;
private int n4 = 400;
public void m1(){
//该方法可以访问四个属性
System.out.println("n1="+n1+"n2="+n2+"n3="+n3+"n4="+n4);
}
}
2.我们在同一个包下定义一个测试类来实现;
package src.modifier;
/**
* @auther mhqstart
* @create 2022-01-19 11:24
*/
public class Test {
public static void main(String[] args) {
A a = new A();
a.m1();
}
}
我们发现在同一个类下,所有的权限都能够使用
得出结果,代码运行无误;
二.我们继续验证同包下的运行;
代码实现:
1.我们在同包下定义B类
package src.modifier;
/**
* @auther mhqstart
* @create 2022-01-19 11:53
*/
public class B {
public void say(){]
A a = new A();
//在同一个包下,可以访问public,protected和默认,不能访问private;
System.out.println("n1="+a.n1+"n2="+a.n2+"n3="+a.n3+"n4="+a.n4);
}
}
2.我们在测试类中再进行测试;(此时将n4部分移除后)
我们发现在同一个包内可以访问public,protected和默认,不能访问private;
三.我们验证子类下的运行
1. 子类继承了所有 的属性和方法,但是私有属性和方法不能在子类直接访问,要通过父类的公共的方法去访问
2.不同包中,类的子类只有public,protected能够访问;
四.我们继续验证不同包下的运行;
代码实现:
1.我们再不同包下定义测试类
2,通过测试类实现代码
我们发现不同包下只有public公开类能够使用;
本文参考韩顺平老师的JAVA视频