第一个文件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里面难道有区别吗?

解决方案 »

  1.   

    另外求几位可以交流的学JAVA的朋友,或者有已经在从事JAVA工作的朋友那就更好了。
    我的QQ是
    32294676
    急需和人交流。
      

  2.   

    Test2继承自Test自然可以调用protected方法Test t = new Test();
    //为什么这里就不能访问到proMethod这个方法,而上面FN里面则可以?
    t.proMethod();你这里是在不同的包里调用protected方法,当然是不行的,去看看各个访问权限吧
      

  3.   

    package访问权限比protected限制更严格原因很简单,我可以在包外面用extends继承包里面的类