package com.scope;
public class Father {
public int publicNumber =1;
protected int protectedNumber = 2;
int friendlyNumber =3;//默认的访问控制符为friendly
private int privateNumber =4;
public void printNumber(){
System.out.println("publicNumber = "+publicNumber);
System.out.println("protectedNumber = "+protectedNumber);
System.out.println("friendlyNumber = "+friendlyNumber);
System.out.println("privateNumber = "+privateNumber);
}
}
package com.scope;
public class Son extends Father{
public void printNumber(){
System.out.println("publicNumber = "+publicNumber);
System.out.println("protectedNumber = "+protectedNumber);
System.out.println("friendlyNumber = "+friendlyNumber);
System.out.println("privateNumber = "+privateNumber);//不能访问
}
}
package com.scope1;
import com.scope.Father;
public class Daughter extends Father{
public void printNumber(){
System.out.println("publicNumber = "+publicNumber);
System.out.println("protectedNumber = "+protectedNumber);
System.out.println("friendlyNumber = "+friendlyNumber);//不能访问
System.out.println("privateNumber = "+privateNumber);//不能访问
}
}
package com.scope;
public class TestFather {
Father father = new Father();
public void printNumber(){
System.out.println("publicNumber = "+father.publicNumber);
System.out.println("protectedNumber = "+father.protectedNumber);
System.out.println("friendlyNumber = "+father.friendlyNumber);
System.out.println("privateNumber = "+father.privateNumber);//不能访问
}
}
package com.scope1;
import com.scope.Father;
public class TestFather1 {
Father father = new Father();
public void printNumber(){
System.out.println("publicNumber = "+father.publicNumber);
System.out.println("protectedNumber = "+father.protectedNumber);//不能访问
System.out.println("friendlyNumber = "+father.friendlyNumber);//不能访问
System.out.println("privateNumber = "+father.privateNumber);//不能访问
}
}
结论:
public 的作用域为:当前类、子类(同一个包中或不同包中皆可)、同一个包中的类、不同包中的类
protected的作用域为:当前类、子类(同一个包中或不同包中皆可)、同一个包中的类
friendly的作用域为:当前类、同一个包中的子类(不同包中的子类不能访问)
private的作用域为:当前类