super关键字

当子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这个问题,Java提供了super关键字,super关键字可以在子类中调用父类的普通属性、方法和构造方法。

下面详细讲解super关键字的具体用法。

1.使用super关键字访问父类的成员变量和成员方法,具体格式如下:

super.成员变量

super.成员方法(参数1,参数2...)

图1:下面通过一个案例学习使用super关键字访问父类的成员变量和成员方法, 修改图1中的代码,在Dog类中使用super关键字访问父类的shout()方法,修改后的代码如图2所示。

图2:

在图2中,第2~8行代码定义了一个Animal类,并在Animal类中定义了name属性和shout()方法。第10~19行代码定义了Dog类并继承了Animal类。 在Dog类的shout()方法中使用“super.shout()”调用了父类被重写的shout()方法。在printName()方法中使用“super.name”访问父类的成员变量name。从图2运行结果中可以看出,子类通过super关键字可以成功地访问父类成员变量和成员方法。

图2运行结果:

2.使用super关键字访问父类中指定的构造方法,具体格式如下: 

super(参数1,参数2...)

下面通过一个案例学习如何使用super关键字调用父类的构造方法,如图3所示。

图3:

图3运行结果:在图3中,第29行代码使用super()调用了父类中有两个参数的构造方法;39~41行代码是在子类Dog中重写了父类Animal中的info()方法;第46~47行代码实例化了一个Dog对象并调用了info()方法。由图3运行结果可知,程序输出的内容是在子类中定义的内容。这说明,如果在子类中重写了父类的info()方法,使用子类的实例化对象调用info()方法时,会调用子类中的info()方法。

注意:

通过super()调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。

super与this关键字的作用非常相似,都可以调用构造方法、普通方法和属性,但是两者之间还是有区别的,super与this的区别如图4所示。

 图4:

需要注意的是,this和super两者不可以同时出现,因为this和super在调用构造方法时都要求必须放在构造方法的首行。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值