关于default 和 protected访问可见性问题

sling2007 2011-03-08 11:11:31
在一些资料中了解到
作用域 当前类 同包 子孙类 其他、
protected √ √ √ ×
default √ √ XX ×
我自己写了个小例子,如下,
但是发现在同包和子孙类的情况下,二者都是可见的,是不是我哪里的基础知识有问题吗?
把被测试类的T的实例变量和方法的可见修饰符删除后,测试类P和TT的执行结果不变。
被测试类 T

package com.test;
public class T {
protected int i = 1;
protected void test() {
System.out.println(12345);
}
}

同包测试类 P

package com.test;
public class P {
public P() {
T t = new T();
System.out.println(t.i);
t.test();
}
public static void main(String[] args) {
new P();
}
}

子孙测试类 TT

package com.test;
class TT extends T {
public TT() {
System.out.println(super.i);
super.test();
}
public static void main(String fff[]) {
new TT();
}
}
...全文
213 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sling2007 2011-03-09
  • 打赏
  • 举报
回复
啊............
原来我把子类放在同一个包下了
wd9053 2011-03-08
  • 打赏
  • 举报
回复
protected能够被同一包中的类和子孙类访问,而default能被同一包中的类访问。注意,如果子孙类在同一包中,也能访问default,否则不能访问。
TT和T都在一个包中,所以TT既可以访问T中的protected,也可以访问default

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧