JAVA——super关健字用法(子类创建对象时的易错点)

super关健字用法有以下两种:
1.操作被隐藏的成员变量和被重写的成员方法(所谓被隐藏的变量是指与子类变量名相同的父类变量) 如果想在子类中操作父类中被隐藏的成员变量和被重写的成员方法,也可以使用super关键字。 (调用父类变量、成员方法时super位置没有太多限制)
2.调用父类构造方法(重点)(调用父类构造器时super必须放在子类构造器里第一句)
在这里插入图片描述
从以上截图可以看出输出子类构造器时先输出父类构造器,这就涉及到调用父类构造器。若父类无构造器,则会默认一个无参构造器,而子类则会默认super()来调用父类无参方法,即子类创建构造器时,都会调用父类构造器。
那么,易错点来了,子类仅会以super()调用父类无参构造器,一旦父类定义一个有参构造器会发生什么呢?
在这里插入图片描述
在这里插入图片描述
子类直接报错,因为它无法调用父类构造器
以上两幅截图实质一样,可以看出报错了。系统还是默认super()去调用父类无参构造器,但此时父类已经没有无参构造器了。修改方法:在子类添加一个super(x)(x是与父类构造方法一致的变量)
当父类无参而子类有参时此时则无需加super(x)否则会报错,因为父类没有有参构造器所以子类无法调用。如图:
在这里插入图片描述
系统会默认super()去调用父类无参构造器。如图:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值