1.java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围)。
1.公开级别:用public修饰,对外公开
2.受保护级别:用protected修饰,对子类和同一个包中的类公开
3.默认级别:没用修饰符,向同一个包的类公开
4.私有级别:用private修饰,只有本类可以访问,不对外公开。
2.4种访问修饰符的访问范围
3.同一个类中可以访问public,protected,默认,私有的属性和方法
package com.hspedu.modifier;
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);
}
}
4. 在一个包下,可以访问public,protected和默认 不能访问私有的
package com.hspedu.modifier;
public class B {
public void say() {
A a = new A();
// 在一个包下,可以访问public,protected和默认 不能访问私有的
System.out.println("n1=" + a.n1 + "n2" + a.n2 + "n3" + a.n3);
}
}
5. 在不同的包下可以访问public修饰的属性和方法
但是不能访问protected,默认,private修饰的属性和方法
package com.hspedu.pkg;
import com.hspedu.modifier.A;
//不同包下的类
public class Test {
public static void main(String[] args) {
A a = new A();
// 在不同的包下可以访问public修饰的属性和方法
// 但是不能访问protected,默认,private修饰的属性和方法
System.out.println(a.n1);
}
}
6.文件的架的结构
modifier A:
package com.hspedu.modifier;
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);
}
}
B:
package com.hspedu.modifier;
public class B {
public void say() {
A a = new A();
// 在一个包下,可以访问public,protected和默认 不能访问私有的
System.out.println("n1=" + a.n1 + "n2" + a.n2 + "n3" + a.n3);
}
}
Test:
package com.hspedu.modifier;
public class Test {
public static void main(String[] args) {
A a = new A();
a.m1();
B b = new B();
b.say();
}
}
pkg-Test:
package com.hspedu.pkg;
import com.hspedu.modifier.A;
//不同包下的类
public class Test {
public static void main(String[] args) {
A a = new A();
// 在不同的包下可以访问public修饰的属性和方法
// 但是不能访问protected,默认,private修饰的属性和方法
System.out.println(a.n1);
}
}
7.注意事项
1.修饰符可以用来修饰类中的属性,成员方法以及类
2.只有默认和public才能修饰类,并且遵循上述访问权限的特点
2.同一个类中四种都能访问
3.同一个包中不用类中public,protected和默认 不能访问私有的
4.不同包中只能访问public修饰的属性和方法