super关键字
Super关键字的使用
- Super关键字
1.1 super可以理解为父类的关键字,super可以用来调用属性、方法、构造器 - Super关键字的使用
2.1 我们可以在子类的方法或构造器中,通过使用“super.属性”或“super.方法”的方式,显示调用父类中声明的属性和方法,但通常情况下,我们习惯省略super
代码如下:
class Test{
public Test(){
super();
System.out.println("父类的构造方法被执行!");
}
}
public class Test02 extends Test{
public Test02(){
super();
System.out.println("子类的构造方法被执行!");
}
public static void main(String[] args){
Test02 test02 = new Test02();
}
}
2.2 特殊情况:
(1) 当父类与子类定义了同名属性时,我们想调用父类生命的属性时,则必须显示使用“super.属性”的方式,表明调用的是父类中声明的属性
(2)当子类重写了父类的方法以后,我们想在子类的方法中调用父类被重写的方法时必须使用“super.方法”的方式表明调用的是父类中被重写的方法
如下列代码是父类中定义的withdraw方法
关于super关键字我们需要掌握的内容是:
- super是一个关键字,并不是一个引用,也不指向任何对象;
- super只代表当前对象内部的那一块父类型特征;
- super关键字可以出现在实例方法和构造方法当中;
- super的语法有:super. 和 super();
- super.在大部分情况下是可以省略的,如果父类和子类当中有同名属性,想在子类当中访问父类的属性,这种情况下不能省略;
- super()只能出现在构造方法非注释语句的第一行;
- super()通过当前的构造方法去调用父类中的构造方法,目的是在创建子类对象的时候,先初始化父类型特征。
super()表示通过子类的构造方法调用父类的构造方法,我们可以模拟一种现实世界的场景来理解它,也即要想有儿子,必须要先有父亲。当一个构造方法的第一行既没有this();又没有super();的话,默认有一个super();表示通过当前子类的构造方法调用父类的无参构造方法,所以说必须保证父类的无参数构造方法是存在的。 Tips:this()和super()不能共存,它们都是只能出现在构造方法第一行,无论怎样折腾,父类的无参构造方法是一定会执行的。 由此我们可以总结出一般性的结论:在Java语言当中,不管是new什么对象,最后Object类中的无参构造方法是一定会执行的。
Java是怎么来区分子类和父类的同名属性???
this.name表示当前对象的name属性;
super.name表示当前对象的父类型特征中的name属性。
还没有评论,来说两句吧...