日期:2014-05-20  浏览次数:20828 次

关于包和protected方法问题
第一个文件Test.java
package   cn.mybole;

public   class   Test
{
protected   void   proMethod()
{
System.out.println( "proMethod ");
}
}

第二个文件   Test2.java
package   com.winsunlight;

import   cn.mybole.Test;
public   final   class   Test2   extends   Test
{
/*public   void   fn()
{
proMethod();
}*/
public   static   void   main(String   []   args)
{
Test   t   =   new   Test();
//为什么这里就不能访问到proMethod这个方法,而上面FN里面则可以?
t.proMethod();
/*Test2   t=new   Test2();
t.fn();*/
}
}


请问这是为什么呢????就在上面注释那个地方的问题。
这个是看孙鑫的视频来的一段代码。
他是在上面FN方法里面实现的访问。
但是我在下面如果构造一个Test类的对象后,反而就访问不了那个protected方法了呢?
proteted方法是在不同的包,有关联的才可以访问到。但是上面在方法fn里面和在main里面难道有区别吗?


------解决方案--------------------
Test2继承自Test自然可以调用protected方法

Test t = new Test();
//为什么这里就不能访问到proMethod这个方法,而上面FN里面则可以?
t.proMethod();

你这里是在不同的包里调用protected方法,当然是不行的,去看看各个访问权限吧
------解决方案--------------------
package访问权限比protected限制更严格

原因很简单,我可以在包外面用extends继承包里面的类