Java关于抽象类能否被实例化的问题

转载:http://blog.csdn.net/zhanzhan0329/article/details/9173419

首先明确地说:抽象类不能被实例化。

我对抽象类能否被实例化产生疑问始于我看到一句话说:子类实例化会先实例化父类。而且,自己也知道,抽象类作为父类,其子类是能调用他的属性和已实现方法的。这证明抽象父类在内存是有一定空间的。(百度百科说:实例化其实就是在内存中开放一个空间用于存储新的产物,即对象)

后来发帖问了,总结得到:子类实例化会先初始化父类,父类初始化并不是又创建一个父类对象,而是把父类中定义的对象相关属性都初始化,因为这些属性子类对象也是拥有的。所以,为了保证子类对象的完整性,要从最底层的父类开始,逐级初始化,所有初始化都完成后才会生成一个完整的子类对象。(也就是要区分开实例化和初始化)

其实也可以这么理解,抽象类的作用是对一类事物的描述和定义,所以他并不特指某一个东西,因为他是抽象的。(不要像我之前那样去钻牛角尖)

http://www.cnblogs.com/crt-share/archive/2015/08/29/4769331.html

抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,而是通过父类的引用来指向子类的实例来间接地实现父类的实例化(因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化了).但是:接口是不能被实例化的(接口压根就没有构造函数)。

http://blog.csdn.net/heqiyu34/article/details/6403142