java吧 关注:1,255,629贴子:12,745,524
  • 6回复贴,共1

抽象类的子类实例化

只看楼主收藏回复

为什么抽象类的子类实例化需要用到向上转型,不能直接实例化吗?如:
B extends A
A a=new B()
不能直接 B b=new B()吗?


IP属地:广东来自手机贴吧1楼2017-03-01 22:48回复
    因为A也可以被别人继承!比如Object就是所有类的超类,向上转型就可以达到传参的目的,比如又有个 c继承了a 如果b和c都有传入本类对象为参数的方法,那如何用一个对象来同时满足这几个方法的参数呢?答案就是向上转型!这样A的对象引用就可以在b和c类的传对象为参数方法中使用说的不太标准希望你能理解


    来自Android客户端3楼2017-03-01 23:00
    回复
      抽象类哪来的对象啊


      IP属地:广东来自Android客户端5楼2017-03-02 04:09
      回复
        向上转型的意义在于,如果你另外定义了一个接口,或工具类,其中的方法需要传参,并根据不同的参数输出不同的结果,如果你传入的是子类对象,那你就需要写大量的方法,但是如果是创造一个父类对象指向一个子类对象,也就是向上转型,那么你只需要传入father f这个参数即可,方法会根据f指向的不同的子类对象输出不同的数据,优化代码,提高扩展性。


        IP属地:上海来自Android客户端6楼2017-03-02 08:00
        回复
          解藕


          来自iPhone客户端7楼2017-03-02 10:22
          回复