堆栈花园的Java学习备忘录——super关键字


  • super可以和this对比学习

  • super的语法

  1. super可以出现在实例方法和构造方法中,super不能出现在静态方法中。
  2. super的语法:“super.” 和 “super()”
  3. super. 大部分情况下可以省略
  4. super() 只能出现在构造方法的第一行,通过当前的构造方法去调用父类中的构造方法(根据传参决定调用父类中哪个构造方法)。
  • 这样做的目的是创建子类对象的时候,先初始化父类型的特征。
  1. 如果一个构造方法第一行既没有this()又没有super()的话,默认会有一个super()。这样的语法机制保证了通过当前子类的构造方法一定会调用父类的无参构造方法,因此必须保证父类的无参构造方法必须存在,否则会报错。
  • 例如
class Father{
    String fatherFristName;

    public Father(String fatherFristName) {
        this.fatherFristName = fatherFristName;
    }
}

class Child extends Father{
    public Child(){
        /*这里默认会有一个super();
        但是由于父类中没有无参的构造方法,
        所以这里编译器会报错。
        */
    }
}

6.什么时候"super." 不能省略?
如果父类中有某个属性或方法,子类中也有相同的属性或方法,但是想在子类中访问“父类的特征”,“super.” 不能省略,否则会自动加上"this."。

  • 注意:

super不是引用,super也不保存内存地址,super不指向任何对象,super只是代表当前对象的父类型的特征。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值