记录一下不会的吧。。。。。。。。。。
1抽象类能被实例化吗?
考察点:java在创建子类对象时,会不会创建父类对象
创建子类对象时不会创建父类对象。所以抽象类是不会被实例化的,因为根本就没有父类对象被创建出来,虽然确实执行了父类的构造方法,但执行了构造方法就会创建父类对象吗,那你错了,构造方法只是初始化对象用的,此时父类构造方法初始化的是子类对象,真正的父类对象并没有被创建,因为内存中并不存在父类对象,否则java的内存管理早就爆了,满内存都是java的object对象!!!!!!!
我们创建子类对象时,只是说创建了父类空间,并进行了初始化。如果说创建子类的时候就会创建它的父类,那内存空间中不都是Object类的对象吗?(想想java的设计师也不会这么做的)
- 创建对象指的是在堆区开辟空间
- 编译器在运行子类构造器之前,必须先执行父类构造器;且调用父类构造器的语句必须在子类构造器的第一行。
- 构造方法的作用是为堆区中的对象的属性初始化,不是创建对象。
下面将通过一个简单的Demo来展示一下:
首先,定义一个抽象类B,包含抽象方法play()
public abstract class B {
private String str;
public B(String a){