我是一java新学习的人,请教个问题:如果Father 是父类,Son 是子类
Son s=new Son();
Father f=s;我要问的问题是,这时产生了几个对象?
谢谢高手解答!

解决方案 »

  1.   


    你应该google :  "多态"
      

  2.   

    一个对象。
    new Son();比喻成狗,
    Son s 和Father f只是牵狗的绳,绳子肯定不是狗。只要是new时,才生产一个对象。你句子只有一个new,就一个对象。
      

  3.   

    你要搞清楚java里面的运行时类型和声明类型你说的属性和方法存在差别 其实仅仅是存在 代码编译期间,声明为父类的变量 (实际上是子类的实现)无法调用 子类独有的方法,这是因为java编译器不允许,也是多态的一种保护机制如果是上面的情况,你自己清楚是子类的实现,可以将父类类型的实例再强制装换为子类,这样就可以完整调用
    Son s=new Son();
    Father f=s;
    Son s2=(Son)f; //通过s2可以调用完整的子类方法与属性