实例化的定义:实例化一个对象,其实就是在内存中开放一个空间,用于存储新的产物。(来自百度百科)
如果是这么个定义的话,抽象类里除了有抽象方法外,可以有属性和实现方法,而且其子类能对抽象父类的属性和非抽象方法进行调用。那么就是说,抽象父类在内存中也是有一定空间的,只是不能new罢了?

解决方案 »

  1.   

    楼主的理解完全正确.在java中所有类的父类都是Object。在所有类进行初始化的时候都会调用Object的初始化方法,注意初始化方法并不是构造方法,初始化完成后就在内存中存在(这个过程就是类加载过程)。抽象类也一样有初始化方法。只不过我们在进行类实例化的时候比如通过new 关键字产生实例,java语言不允许抽象类有实例产生,所以抽象类不能被实例化。
      

  2.   

    抽象类不能实例化的话,那怎么可以通过子类调用他的属性和方法呢?
    究竟Java实例化的定义是什么?
      

  3.   

    抽象类不能实例化的话,那怎么可以通过子类调用他的属性和方法呢?
    究竟Java实例化的定义是什么?你要把实例化和初始化分辨开来,父类初始化并不是又创建一个父类的对象,而是把父类中定义的对象相关的属性都初始化,因为这些属性子类对象也是拥有的。
    所以为了保证子类对象的完整性,要从最底层的父类开始,逐级初始化,所有初始化都完成后才会生成一个完整的子类对象。