关于包和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继承包里面的类