在Android studio中的super方法
指向自己父类对象的一个指针
super方法调用的是整个构造函数还是构造函数的第一条语句
在Android studio中的super方法
指向自己父类对象的一个指针
super方法调用的是整个构造函数还是构造函数的第一条语句
super方法使用场景很多,存在于子类方法中,用于指向子类对象中父类对象,可以访问父类的属性、函数、构造函数。
这里举一个例子:
public <init>(I)V
L0
LINENUMBER 18 L0
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V // 调用实例构造方法
L1
LINENUMBER 19 L1
ALOAD 0
ILOAD 1
PUTFIELD Substance.i : I // putfield只弹出栈内的操作数,而没有向操作数栈压回任何数据
L2
LINENUMBER 20 L2
RETURN // 返回
L3
LOCALVARIABLE this LSubstance; L0 L3 0 // 局部变量表this一个Substance
LOCALVARIABLE i I L0 L3 1
MAXSTACK = 2
MAXLOCALS = 2
可以看到程序在Square square = new Square();的构造是在 INVOKESPECIAL Square.<init> ()V,
INVOKESPECIAL是调用调用实例构造方法,调用私有方法和父类方法的意思,这里面是调用的构造方法,
然后进到 public <init>(I)V 中 INVOKESPECIAL Substance.<init> (I)V的构造方法
所以:super方法调用的是整个构造函数