Android super方法

在Android studio中的super方法
指向自己父类对象的一个指针

super方法调用的是整个构造函数还是构造函数的第一条语句

super方法使用场景很多,存在于子类方法中,用于指向子类对象中父类对象,可以访问父类的属性、函数、构造函数。
这里举一个例子:

img

  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方法调用的是整个构造函数