1、同一类中测试代码如下:
public class Father {
private void show() {
System.out.println("show");
}
void show2() {
System.out.println("show2");
}
protected void show3() {
System.out.println("show3");
}
public void show4() {
System.out.println("show4");
}
public static void main(String[] args) {
Father f = new Father();
f.show();
f.show2();
f.show3();
f.show4();
}
}
四种修饰符都可以正常输出:
show
show2
show3
show4
可以得出同一个类中,四种修饰符都可以返问。
2、同一个包下。
在上面的基础中创建包,Farther类的包cn.itcast,另新建一个与Father类同包名的Son.java子类,测试代码如下:
package cn.itcast;
public class Son extends Father {
public static void main(String[] args) {
Father f = new Father();
f.show();
f.show2();
f.show3();
f.show4();
System.out.println("--------------");
Son s = new Son();
s.show();
s.show2();
s.show3();
s.show4();
}
}
建包后,而编译出错如下:
另新建一个Test.java,测试结果如下:
所以得出,在同一包下的子类、其他类都可以返问除了private修饰符外的
3、不同包下(子类)
测试代码如下:
package com.wen;
//导包
import cn.itcast.Father;
public class Son extends Father {
public static void main(String[] args) {
Father f = new Father();
f.show();
f.show2();
f.show3();
f.show4();
System.out.println("--------------");
Son s = new Son();
s.show();
s.show2();
s.show3();
s.show4();
}
}
从上面可以知道,子类可以返问在不同包下的父类信息,修饰符权限为protected和public关键字
不同包下其他类(Test类),代码如下:
package com.wen;
import cn.itcast.Father;
class Test {
public static void main(String[] args) {
Father f = new Father();
f.show();
f.show2();
f.show3();
f.show4();
}
}
所以不同包下无关类只能允许访问public关键字修饰的。