两个包,一个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();
}哪位高手解释下,谢啦!

解决方案 »

  1.   

    你自己去看关键字的说明,protected private public以及不声明默认的作用范围,百度一下就ok了,自己找答案不比别人告诉你好多了么?
      

  2.   

    protected只能它自己的子类能调用;private只能在本类里面调用;public是公有的,在其它页面里面也都能调用了。百度一下他们的作用范围……
      

  3.   

    bc.h("OutClass");//这个调用错误,为什么貌似bc对象 这时候 还没有被new出来 吧
      

  4.   

    唉,你这个学习态度不对,要仔细找,充分利用网络资源,把找到的东西都变成自己的,在解决问题的过程中你会学习到很多的,除了你想要的答案之外,你会得到其他的相关知识的。真是替你担心!既然你想吃现成的,下面这个你可以看看 http://www.iteye.com/topic/662442
      

  5.   

    其实楼主的问题挺不错的,我相信大部分人都知道protected是给子类调用的,但更大部分的人可能不知道,被protected修饰的函数除了子类可以访问外,还可以被同一个包内的其它类的函数访问,对于同一个包内的其它类来说,protected和public没区别,但对于protected所在包外的其它包来说,protected和private是一样的。
      

  6.   

    JAVA里面protected可以被同一个包中其它类访问,和C++/C#不一样
      

  7.   

    public :公共,访问权限最广
    private 仅限本类中
    protected 该类和该类的继承类
    friendly  本项目中
      

  8.   

    权威教材中protected的作用域的定义其实不够严密,更详尽的protected作用域的解释:http://edu.codepub.com/2010/0806/24880.php ;
    相信你可以得到答案。
      

  9.   


    对于protected这个访问修饰符争论比较大点,很多教科书上,直接写其访问权限为该类和该类的子类。
    其实在同一个程序集中,protected与public没什么区别。
      

  10.   

    恩 这个问题很简单  因为protected子类中可用的意思是 你必须用子类对象去调用 不能通过父类去调用
      

  11.   

    protect修饰的方法在本类体内,本包中,还有其子类能用,其他调用就是不符合权限规定了
      

  12.   

    protected修饰的方法或变量将会被任何位置的子类继承,但是永远只能被最早定义他的父类所在的包的类所见(除了该类以及其子类能看到本身的该protected方法或变量之外。)虽然有点绕,但还是明白了些