抽象类会被子类实例化吗?后台是否创建抽象类实例?
抽象类实例创建问题解答
虽然无法直接实例化抽象类,但在以下示例中使用super关键字引用了抽象类的实例变量:
public abstract class Abstract { protected int n1; protected int n2; public Abstract(int n1, int n2) { this.n1 = n1; this.n2 = n2; } }
public class Instance extends Abstract { public Instance(int n1, int n2) { super(n1, n2); } public int makeSum() { return super.n1 + super.n2; } public static void main(String[] args) { Instance myInstance = new Instance(1, 2); System.out.println(myInstance.makeSum()); } }
问题:后台是否会创建抽象类的实例?
不会单独创建抽象类的实例。
当你实例化子类Instance时,JVM会先调用抽象父类Abstract的构造方法,目的是初始化子类实例中属于父类的成员变量,但这并不意味着生成了一个独立的抽象类对象。整个被创建的对象本质上是Instance类型的实例,父类的成员只是作为这个子类实例的一部分存在。super关键字只是用来访问父类的成员,而非指向一个单独的父类实例。
内容的提问来源于stack exchange,提问作者zozo
相关产品推荐
相关产品推荐

