黑马程序员技术交流社区

标题: 关于多态的疑问,子父类对象转换问题,望高手解惑 [打印本页]

作者: 客剑    时间: 2014-6-28 00:02
标题: 关于多态的疑问,子父类对象转换问题,望高手解惑
本帖最后由 客剑 于 2014-6-28 00:03 编辑
  1. interface A
  2. {
  3. }
  4. class B implements A
  5. {
  6.         public String func()
  7.         {
  8.                 return "func";
  9.         }
  10. }
  11. class Demo
  12. {
  13.         public static void main(String[] args)
  14.         {
  15.                 A a=new B();     //这句执行时到底怎么工作的,若是a对象中没有func()函数
  16.                 //B b=(B)a;//强转回B类对象,对象中怎么就有了,(这句加到程序中,打印b.function()就可以运行了)
  17.                 System.out.println(a.func());
  18.         }
  19. }
复制代码
这是毕老师视频中的题,我就以它为例子好了,一直没搞明白,这几句在JAVA中具体怎么工作的?


作者: 杨庆雷    时间: 2014-6-28 01:52
给你两个链接  说的挺细的

http://www.doc88.com/p-200931471839.html

http://wenku.baidu.com/view/7c46a0d149649b6648d747c1.html
作者: zhanqq2010    时间: 2014-6-28 14:16
interface A
{
}
class B implements A
{
        public String func()
        {
                return "func";
        }
}
class Demo
{
        public static void main(String[] args)
        {
                A a=new B();     //创建B的一个实例对象,让a指向这个实例对象
                //B b=(B)a;        //因为A中没有func()这个方法(这个方法是在子类中定义的),他是访问不到func()方法的,只有将他强制转化为B,才可                         以访问,除非你在A中定义public String func();这个方法,才才能动态连接到func()这个方法
                System.out.println(a.func());     //这里应该有错,改为 System.out.println(((B)a).func());
        }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2