求助!JAVA中的protected问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 23:59:45
Test2是Test的子类,

为什么在Test2中的public void fn()下可以访问Test中的protected void proMethod(),

而在Test2的public static void main(String args[])中却不能访问Test中的protected void proMethod()呢?

package ok.mybole;
public class Test
{
public void pubMethod()
{
System.out.println("pubMethod");
}
protected void proMethod()
{
System.out.println("proMethod");
}
void defMethod()
{
System.out.println("default");
}
private void priMethod()
{
System.out.println("priMethod");
}
public static void main(String args[])
{
Test tt=new Test();
tt.pubMethod();
tt.proMethod();
tt.defMethod();
tt.priMethod();
}
}

package cn.mybole;
import ok.mybole.Test;
public class Test2 extends Test
{
public void fn()
{
//pubMethod();
//proMethod();

protected
修饰的方法和变量可以被子类继承,而不在乎它的子类是否在同一个包中,同时也可以被同一包中的子类所访问,而非子类则完全不能访问。这就好像一个人的东西可以和自己家的人分享但是不可以和其他人分享一样。

这里是可以访问的。
运行结果应该是proMethod(实验过了)

这样你明白了吗?