关于接口与继承 假如有一个类<或者接口>A,包涵有A() B() C() D()四种操作,类B是对A的继承或实现,包涵有以上四种方法的同时,倘有本身E() F()二种操作.A a= new B()的情况下,a能否访问B中的E() F()??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能的,因为第一条语句就是告诉虚拟机说,请你把a当作A类的对象处理(尽管实际上a是一个B类对象),所以a只能调用了从A类继承来的方法。如果你要使用B类新创建的方法,那你使用时就应该这样:((B)a).E()这样就是告诉虚拟机,先把a cast成B类,然后再调用方法E,这样虚拟机就知道其实a是一个B类的对象。不过当处理多态时,即使你不告诉虚拟机a是不是B对象,虚拟机都会知道a其实是一个B类的对象。当然这个是一个多态的情况,不是你这个问题讨论的情况。 of course not,父类怎么可以访问子类?LZ好好想清楚 A a = new B(); 用B来实力化a,但是,当作A来使用,所以,B中的E() F()无法使用。如果是B a = new B(),就可以使用了。 请教两个String对比的内存问题 jdk1.6 怎样学习源代码 Quartz Trigger 触发问题 从设计的角度来讲,类"车"与"丰田"设计为抽象/继承关系好,还是设计为接口/实现关系好? 继承问题 变量竟然不能继承? JDBC: Class.forName(drivername);已经没问题了,但是getConnection()认报SQLException 我太笨了,找个聪明的大侠帮我看一下? 请教 Inner Class 的问题 请教一个重载函数的简洁写法 java中字符串保存路径的问题 一直没试验过,今天测试了发现原来不行
如果你要使用B类新创建的方法,那你使用时就应该这样:((B)a).E()
这样就是告诉虚拟机,先把a cast成B类,然后再调用方法E,这样虚拟机就知道其实a是一个B类的对象。不过当处理多态时,即使你不告诉虚拟机a是不是B对象,虚拟机都会知道a其实是一个B类的对象。当然这个是一个多态的情况,不是你这个问题讨论的情况。
如果是B a = new B(),就可以使用了。