/**
* 访问控制权限符
* 1、访问控制权限服来控制元素的访问范围
* 2、访问权限修饰符包括:
* public 表示公开的,在任何位置都可以访问
* protected 同包,子类
* 缺省 同包
* private 表示私有的,只能在本类中访问
* 3、访问控制权限修饰符可以修饰类、变量、方法...
* 4、当某个数据只希望子类使用,使用protected进行修饰
* 5、修饰符的范围:
* private < 缺省 < protected < public
*/
类只能采用public和缺省的修饰符进行修饰【内部类除外】
下面来主要介绍缺省和保护的例子
1、User类,此处主要讨论 i 和 j 的修饰符
package com.bjpowernode.javase.test005;
public class User {
//受保护的
protected int i = 10;
//缺省的
int j = 20;
private void m1(){
}
public void m2(){
}
protected void m3(){
}
void m4(){
}
}
2.调用import com.bjpowernode.javase.test005.User包,构建User()对象,由于
i 是受保护的,在同包和子类这两种情况下使用,现在既不同包也不是子类,无法调用
j 是缺省的,只能在同包中使用,现在不同包,无法调用
package com.bjpowernode.javase.test006;
import com.bjpowernode.javase.test005.User; //调用其他包
public class UserTest {
public static void main(String[] args) {
User u = new User();
//System.out.println(u.i); //i是受保护的,在同包和子类这两种情况下使用,现在既不同包也不是子类
//System.out.println(u.j); //j是缺省的,只能在同包中使用,现在不同包
}
3.调用import com.bjpowernode.javase.test005.User包,继承User类,为User类的子类,由于
i是受保护的,在同包和子类这两种情况下使用,所以可以在这个子类中使用
j是缺省的,只能在同包中使用
package com.bjpowernode.javase.test006;
import com.bjpowernode.javase.test005.User; //调用其他包
public class Driver extends User {
public void m(){
System.out.println(this.i); //i是受保护的,在同包和子类这两种情况下使用,所以可以在这个子类中使用
//System.out.println(this.j); //j是缺省的,只能在同包中使用
}
}
4.类只能采用public和缺省的修饰符进行修饰【内部类除外】
创建类的时候我们发现只有这两个选项,public和缺省(default)两种,如图示: