假如有一个类<或者接口>A,包涵有A()  B()  C()   D()四种操作,类B是对A的继承或实现,包涵有以上四种方法的同时,倘有本身E()  F()二种操作.A a= new B()的情况下,a能否访问B中的E() F()???

解决方案 »

  1.   

    不能的,因为第一条语句就是告诉虚拟机说,请你把a当作A类的对象处理(尽管实际上a是一个B类对象),所以a只能调用了从A类继承来的方法。
    如果你要使用B类新创建的方法,那你使用时就应该这样:((B)a).E()
    这样就是告诉虚拟机,先把a cast成B类,然后再调用方法E,这样虚拟机就知道其实a是一个B类的对象。不过当处理多态时,即使你不告诉虚拟机a是不是B对象,虚拟机都会知道a其实是一个B类的对象。当然这个是一个多态的情况,不是你这个问题讨论的情况。
      

  2.   

    of course not,父类怎么可以访问子类?LZ好好想清楚
      

  3.   

    A a = new B(); 用B来实力化a,但是,当作A来使用,所以,B中的E() F()无法使用。
    如果是B a = new B(),就可以使用了。