请仔细阅读代码,在子类中构造父类的对象,并用对象名.方法名调用父类的方法,是可以的。protected在这里并没有得到利用。

解决方案 »

  1.   

    protected  void run(){ }
    方法为protected时只有类文件在同一个包里时才可以调用
    方法为private时只有内部方法才可以调用
    解决方法就是,把protected改为public,
    或者把SubTest.java和Test.java都放在happy包下面
      

  2.   

    请注意protected是子类和包可见的,这里不是想象的那么简单,关键是对“对象”操作,如果调用方法是不会有任何问题的!请所有调这个程序的人仔细分析这个原因,至于代码的解决方法我是很清楚的,我只想知道,为什么这样的“对象”不可以编译通过!
      

  3.   

    为了把问题问得更明确一些,可以把超类中的run声明为protected static run(){},则运行通过,这无非是吧方法变成了类共有而已。为什么会这样呢?