两个包,一个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包如下:
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包如下:
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();
}
你用的protected
他的访问权限是同一个包中
你的两个类没有在同一个包中,就访问不到了
你把它设成public的就可以了