Java解难

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:30:06
我在测试protected时遇见问题
我分别建了两个java文件 Text1.java 和Text2.java
Text1.java代码为package bao1;
import bao2.Text2;
class Text1 extends Text2
{ void fn()
{go();}
public static void main(String[] args)
{Text2 abc=new Text2();
abc.go();}
}
Text2.java代码为package bao2;
public class Text2
{ protected void go()
{System.out.println("void");}
}
为何我在编译完Text2.java 再编译Text1.java时报错:...bao2.Text2中访问protected abc.go();}出错1
protected方法在不同包 但子类继承中应该是可用的 那为何报错呢???
protected并非只能在同包中能用吧
我设置的Text1是Text2的子类 protected在子类间也能用吧...

protected方法在不同包 但子类继承中是可用的。
但注意:

Text2 abc=new Text2();
abc.go();
这里完全不涉及继承之说。go()还是Text2的go()。因其为protected,所以不能在不同包中被访问。

应改成
Text1 abc=new Text1();
abc.go();
这里的go()才是继承而来的。

protected 只能在同的包使用

将Text2的 go() 改为 public 或者 将 Text2,Text1 置于同一包内,protected 必须在同一包内行

自己问题自己解决呀!