Super关键字的学习

  1. super是一个关键字,全部小写
  2. super和this对比着学习
    this:
    this能出现在实例方法和构造方法中,
    this的语法是:“this.”,“this()”
    this不能使用在静态方法中
    this大部分情况下是可以省略的
    this.什么时候不能省略呢?在区分局部变量和实例变量的时候
    this()只能出现在构造方法的第一行,通过当前的构造方法去调用本类中的其他构造方法,目的是:代码复用
    super:
    super能出现在实例方法和构造方法中,
    super的语法是:“super.”,“super()”
    super不能使用在静态方法中
    super大部分情况下是可以省略的
    super.什么时候不能省略呢?在区分局部变量和实例变量的时候
    super()只能出现在构造方法的第一行,通过当前的构造方法去调用父类中的其他构造方法,目的是:创建子类对象的时候,创建父类对象,先初始化父类型特征
  3. super();
    表示通过子类的构造方法调用父类的构造方法。
    模拟现实世界中的一种场景:要想有儿子,必须先有父亲
  4. 重要的结论
    当一个构造方法第一行:
    既没有this()方法又没有super()的话,默认会有一个super();
    表示通过当前子类的构造方法调用父类的无参数构造方法。
    所以必须保证父类的无参数构造方法是存在的
  5. 注意:
  6. this()和super()不能共存,它们都是只能出现在构造方法第一行
  7. super代表的是当前对象的父类型特征
    注意:在构造方法执行过程中一连串调用了父类的构造方法,父类的构造方法又继续向下调用它的父类的构造方法,但是实际上对象只创建了一个
  8. 思考:super(实参)到底是干啥的?
    super(实参)的作用是:初始化当前对象的父类型特征
    并不是创建新对象,实际上对象只创建了一个
  9. super关键字代表什么?
    super关键字代表的就是当前对象的那部分父类型特征
  10. 例子
    代码:
    在这里插入图片描述

内存分析:
在这里插入图片描述
输出结果:在这里插入图片描述

  1. 例子
    代码:
    在这里插入图片描述
    内存分析:
    在这里插入图片描述
    结果:
    在这里插入图片描述
  2. super在什么时候下不能省略?
    对比this
    this什么时候不能省略?
    set get方法,构造方法
    super什么时候不能省?
    如果父类型中和子类型中有同名属性,而且想在子类型中访问父类型的属性,不能省
  3. JVM是怎么区分子类和父类的同名属性的?
    this.name:当前对象的name
    super.name:当前对象的父类型特征的name属性
  4. 总结super
    super不是引用,super也不保存内存地址,super也不指向任何对象
    super只是代表当前对象内部的那一块父类型的特征
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值