bb是Boy类的实例对象, 当然具有Boy类的方法.

解决方案 »

  1.   

    有Three方法,但如果要调用的话,要先进行造型,因为他申明的是父类变量,也就是说只能这样用:
    (Boy)bb.Three();
    而且其他两个方法直接用就行了
      

  2.   

    Boy = 轿车
    Children =汽车
    Boy 当然是轿车当然也是汽车 
    隐藏实现
      

  3.   

    to whyxx:
      为什么要用(Boy)bb.Three()呢?难道bb还不是一个真正的Boy()对象?
      

  4.   

    因为你在申明的时候,是告诉司机,你这个是汽车,司机当然认为它是汽车咯。如果你想要司机使用轿车的特殊功能,就必须告诉司机,你这个是轿车,是一种特殊的汽车。要用(Boy)bb.Three()就是这个道理。
      

  5.   

    还是有点不懂,我比较笨,麻烦大哥们指点迷津。还是关于bb是谁的对象的问题:因为引用three()这个方法时,需要(Boy)bb.three(),所以bb不是Boy的对象
    而Children的对象又不应该具有three()方法。所以,我糊涂了:)
      

  6.   

    应该说bb是children类型,但是获得了指向一个Boy的句柄而已。
      

  7.   

    Children.java:
    ----------------------------------------
    public class Children {
      public void one() {
        System.out.println("Children one");
      }
      public void two() {
        System.out.println("Children two");
      }
    }
    ----------------------------------------
    Boy.java:
    ----------------------------------------
    public class Boy extends Children {
      public void one() {
        System.out.println("Boy one");
      }
      public void two() {
        System.out.println("Boy two");
      }
      public void three() {
        System.out.println("Boy three");
      }
    }
    ---------------------------------------
    Test.java
    ----------------------------------------
    public class Test {
      public static void main(String[] argv) {
        Children bb = new Boy();
        bb.one();
        bb.two();
    //    (Boy)bb.three();
      }
    }
    ------------------------------------------
    这样的输出结果是
    boy one
    boy two如果我把//去掉,就会提示我not a statement at line xxx我糊涂了:(
      

  8.   

    改成这样就可以了
    ---------------------------------------
    Test.java
    ----------------------------------------
    public class Test {
      public static void main(String[] argv) {
        Children bb = new Boy();
        bb.one();
        bb.two();
        ((Boy)bb).three();
      }
    }