简单学习super的用法

super的作用

  1. 主要存在于子类方法中,用于指向子类对象中父类对象

  2. 访问父类的属性

  3. 访问父类的函数

  4. 访问父类的构造函数

super与this的异同

this和super很像,this指向的是当前对象的调用,super指向的是当前调用对象的父类。类加载完毕,创建对象,父类的构造方法会被调用(默认自动无参),然后执行子类相应构造创建了一个子类对象,该子类对象还包含了一个父类对象。该父类对象在子类对象内部。因此this和super只能在有对象的前提下使用,不能在静态上下文使用。

super的使用

  1. 子类的构造函数默认第一行会默认调用父类无参的构造函数,隐式语句
super();

Son(int y) {
        //super();隐式语句
        this.y = y + x;
        System.out.println("这是子类的有参构造");
    }
  1. 子类显式调用父类构造函数

在子类构造函数第一行通过super关键字调用父类任何构造函数。如果显式调用父类构造函数,编译器自动添加的调用父类无参数的构造就消失。构造函数间的调用只能放在第一行,只能调用一次。super()和this()不能同时存在构造函数第一行

Son(int y) {
        super(y);// 子类显式调用父类构造函数
        this.y = y + x;
        System.out.println("这是子类的有参构造");
    }

你可能感兴趣的:(简单学习super的用法)