抽象类里的构造方法是做什么用的,它都不能被实例化,是为给子类调用 的吗为什么子类可以调用父类(抽象类)的构造方法,构造方法可以调用 ,是不是意味着可以实例化如果抽象类的构造方法是public 的话,那其它任何都可以实例化抽象类

解决方案 »

  1.   

    注意构造方法是进行“初始化”做的,不是创建对象或者“实例化”的。
    比如new Test();
    new导致两个操作,第一步是分配内存创建对象,并完成各个变量的初始化(比如int、short、char等类型为0,double、float为0.0,boolean为false,引用为null等)。第二步是执行构造方法。
      

  2.   

    不可以显式用new 去实例化一个抽象的类。但是抽象类本身可以实例化的。只是它的构造方法不可能直接调用,而是由jvm来调用的。想想如果不能实例化一个抽象类,那么抽象类的子类就必须也是一个抽象类,这样无限的延生下去,没有尽头。毕竟一个抽象类的子类是可以实例化的,而在实例化时就必须实例父类。
      

  3.   

    任何类里都有构造方法,抽象类也不例外,你不写的话系统就默认生成一个,不管怎么说必须有一个子类调用父类的构造方法?只有在生成子类实例的时候才会去调用父类的构造方法就算抽象类的构造方法是public的,其它任何类也不能实例化抽象类
      

  4.   

    抽象类不象具体类那样描述一类具体事物,它是提取多种具有相似性的具体事物的共同特征而产生的,比如,helicoptor, jet, fighter父类plane,有start(),takeOff(),speedUp(),changeDirection()等方法,这是共性,但现实中有一个具体的plane吗?没有,它是抽象出来的,根本不存在。所以实例化一个plane是没有意义的,因此面向对象程序设计机制禁止对象实例化 
      

  5.   

    顶,不写也会有一个默认的空的构造方法。new一个子类的时候,子类会去调用父类的构造方法。