1.super是一个关键字,全部小写。
2.super和this对比学习
this:
能出现在实例方法和构造方法中。
this的语法是: “this.'' 、“this()''
this不能使用在静态方法中。
this.大部分情况下是可以省略的
this.只有在区分局部变量和实例变量的时候不能省略
pulic void setName(string name){
this.name - name
}
this()只能出现在构造方法的第一行,通过当前的构造方法去调用”本类“中其他的构造方法,目的是:代码复用
super:
super能出现在实例方法和构造方法中。
super的语法是: “super.'' 、“super()''
super不能使用在静态方法中。
super.大部分情况下是可以省略的。
supepr()只能出现在构造方法的第一行,通过当前的构造方法去调用”父类“中其他的构造方法,目的是:创建子类对象的时候,先初始化父类型特征。
-
super()
表示通过子类的构造方法调用父类的构造方法。
模拟现实中的场景:要想有儿子,需要先有父亲。
-
注意:
this()和super()不能共存,它们都是只能出现在构造方法的第一行。
-
不管怎么调用,父类的构造方法一定会执行。
public class test { public static void main(String[] args) { new B(); } } class A { public A(){ System.out.println("A类无参构造方法"); } //一个类如果没有提供任何构造方法,系统会默认提供一个无参数构造方法。 //一个类如果手动提供了一个构造方法,那么无参数构造系统将不再提供。 public A (int a){ System.out.println("A类的有参构造"); } } class B extends A{ public B (){ super(2); //super()和this()都必须用在构造函数主体的第一条语句 //this(3); System.out.println("B类的无参构造"); } public B(int i) { System.out.println("B类的有参构造"); } }