关键字super
程序员文章站
2022-05-23 22:06:24
在java类中使用super来调用父类中的指定操作: super可用于访问父类中定义的属性; super可用于调用父类中定义的成员方法; super可用于在子类构造方法中调用父类的构造方法; 注意: 尤其当父子类出现同名成员时,可以用super进行区分; super的追溯不仅限于直接父类,还可以调用 ......
在java类中使用super来调用父类中的指定操作:
super可用于访问父类中定义的属性;
super可用于调用父类中定义的成员方法;
super可用于在子类构造方法中调用父类的构造方法;
注意:
尤其当父子类出现同名成员时,可以用super进行区分;
super的追溯不仅限于直接父类,还可以调用父类的父类;
super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识;
调用父类的构造方法
子类中所有的构造方法默认都会访问父类中空参数的构造方法。
当子类被其他类使用new一个对象时,因为new的对象的值默认是子类的构造方法所产生的值,又因为子类中所有的构造方法默认都会访问父类中空参数的构造方法,当父类中的空参数的构造方法是被显式书写并且有所输出的话,new的对象的值就会默认是父类的构成方法的输出值。也就是说父类的无参数的构造方法会影响到子类的构造方法,从而影响创建对象的的默认值。
当父类中没有空参数的构造方法时,子类的构造方法必须通过this(参数列表)或者super(参数列表)语句指定调用本类或父类中相应的构造方法,且必须放在构造方法的第一行。
当父类是有参构造方法的时候,其子类也必须有一个有参构造方法,好去配合调用父类的有参构造方法,并且调用父类的构造方法要放到第一行。
如果子类构造方法中既未显式调用父类或本类的构造方法,且父类中又没有无参的构造方法,则编译出错。