No method matching f() found in class c05.foreign.PackagedClassSubc05.foreign.PackagedClassSub 无方法 f() 

解决方案 »

  1.   

    你如果是想跨包访问的话,该用pcs.test();而不是pcs.f();PackagedClassSub是PackagedClass的子类,可以访问PackagedClass的方法,但Foreign不是PackagedClass的子类,所以不能访问……
      

  2.   

    但pcs不是PackagedClassSub的对象吗,该对象是否能访问f()方法由该对象所处的地方有关吗?
    该对象如果在Foreign类中就不能访问f(),该对象如果在PackagedClassSub中就能方法f()方法?是这样吗
      

  3.   

    抱歉,该问题我也曾经疑惑过,但答案好象是如ender所说,由于Foreign不是packagedclass的子类,就算在他的代码中实现了对象,也不行。
      

  4.   

    写代码应该有缩进,这种格式很容易看错的:
    你的PackagedClassSub类只有一个方法——test(),f()只是test中的调用。
    这跟“跨包之间访问protected类型的问题”没有任何关系。
      

  5.   

    对不起,我说错了.
    对于 protected method除了包内或者子类以外,是不可以访问的,f()在于PackagedClassSub类中是protected,所以外部不可访问.