关于protected的问题谁知道??

unwritewolf 2008-04-12 01:14:08
package pack2;
public class O1{
private void f1(){}
protected void f2(){
System.out.println("hckacnms");
}
void f3(){}
public void f4(){}
}




package pack3;
import pack2.O1;
class O2 extends O1{
protected void g(){
System.out.println("jskh bkdb");
f2();//此方法可见
}

}

public class Package {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new O2().f2();//这行是错误的
new O2().g();//这行是对的,但g()和f()方法都是protected,喂什么上一个不行呢?
}

}
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WXM8511 2008-04-12
  • 打赏
  • 举报
回复
作用域问题!
详细请参见如下

作用域当前类同包子孙类其他
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
unwritewolf 2008-04-12
  • 打赏
  • 举报
回复
恍然大悟!!谢谢
  • 打赏
  • 举报
回复
protected 的作用域在同一个包中是可见的,这个是比较容易忽视的。

嘿嘿,顺便我自己也加深印象,上面的那个表还是有规律的,可见范围一个比一个少
  • 打赏
  • 举报
回复
因为 O2、Package 两个类在同一个包下啊

protected 的作用域范围:当前类、子孙类、同包中

其他的作用域可见范围:

作用域        当前类       同package    子孙类      其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×


friendly 表示缺省的作用域
unwritewolf 2008-04-12
  • 打赏
  • 举报
回复
急````````

62,623

社区成员

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

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