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修饰的属性和方法