两个包,一个Base包,一个Lone包Base包如下:package Base;
import Lone.LoneClass;
public class BaseClass {
protected int id = 1;
public void p(String s){
System.out.println("p() BaseClass:"+s);
} void f(String s){
System.out.println("f() BaseClass:"+s);
g("BaseClass");
}
protected void h(String s){
System.out.println("h() BaseClass:"+s);
}
}
class UpClass extends BaseClass {
BaseClass bc2= new BaseClass();
public void f(String s) {
System.out.println("f() UpClass:"+s);
h("UpClass"); //直接调用
bc2.h("UpClass");//间接调用,与Lone包里面的调用相比,可以执行
}
}Lone包如下:
package Lone;import Base.BaseClass;public class OutClass extends BaseClass{
public void g(String s){
bc.p("OutClass");
id=2;
h("OutClass");
bc.h("OutClass");//这个调用错误,为什么
}
BaseClass bc = new BaseClass();
}哪位高手解释下,谢啦!
import Lone.LoneClass;
public class BaseClass {
protected int id = 1;
public void p(String s){
System.out.println("p() BaseClass:"+s);
} void f(String s){
System.out.println("f() BaseClass:"+s);
g("BaseClass");
}
protected void h(String s){
System.out.println("h() BaseClass:"+s);
}
}
class UpClass extends BaseClass {
BaseClass bc2= new BaseClass();
public void f(String s) {
System.out.println("f() UpClass:"+s);
h("UpClass"); //直接调用
bc2.h("UpClass");//间接调用,与Lone包里面的调用相比,可以执行
}
}Lone包如下:
package Lone;import Base.BaseClass;public class OutClass extends BaseClass{
public void g(String s){
bc.p("OutClass");
id=2;
h("OutClass");
bc.h("OutClass");//这个调用错误,为什么
}
BaseClass bc = new BaseClass();
}哪位高手解释下,谢啦!
private 仅限本类中
protected 该类和该类的继承类
friendly 本项目中
相信你可以得到答案。
对于protected这个访问修饰符争论比较大点,很多教科书上,直接写其访问权限为该类和该类的子类。
其实在同一个程序集中,protected与public没什么区别。