楼上说得很对,但是如果他们不在同一个包中的话,编译时就会报错! 你看看下面的代码: /*** NewClass.java ****/ package fff; public class NewClass { public void f1(){ System.out.println("f1()"); } protected void f2(){ System.out.println("f2()"); } } /***** TestClass.java *******/ public class TestClass{ public static void main(String[] args){ NewClass refClass=new NewClass(); refClass.f1(); refClass.f2();//why can access the prortected method of NewClass } }这样两个程序在编译时就会报下面的错误: TestClass.java:8: f2()has protected access in xieli.NewClass a.f2();//why can access the prortected method of NewClass ^ 1 个错误
你看看下面的代码:
/*** NewClass.java ****/
package fff;
public class NewClass
{
public void f1(){
System.out.println("f1()");
}
protected void f2(){
System.out.println("f2()");
}
} /***** TestClass.java *******/
public class TestClass{
public static void main(String[] args){
NewClass refClass=new NewClass();
refClass.f1();
refClass.f2();//why can access the prortected method of NewClass
}
}这样两个程序在编译时就会报下面的错误:
TestClass.java:8: f2()has protected access in xieli.NewClass
a.f2();//why can access the prortected method of NewClass
^
1 个错误
friendly:只有同一包内能访问。
protected:同一包内和所有子类都能访问
而友元的私有成员和保护成员是可以被访问的。