Super关键字的用法

本文主要介绍Java中Super关键字的用法。Super用于子类调用父类相关内容,包括构造方法、被覆盖的方法以及数据域。调用父类构造方法时,super语句须在子类构造方法首行;子类覆盖父类方法时,用super可调用父类被重写方法;访问父类数据域虽可行但没必要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Super关键子的一些用法 java

super表示使用它的类的父类(注意:super只发生在子类中),有以下用法:
1、调用父类的构造方法
2、调用父类的方法(子类覆盖了父类的方法时)
3、访问父类的数据域(可以这样用但是没必要这样用)

(1)调用父类的构造方法语法:
当父类只有一个参数的构造函数的时候,子类也必须要具有这个构造函数,或者调用super方法实现新的构造函数。
举一个例子:

如果父类有定义构造函数而子类不定义构造函数:
在这里插入图片描述
就会出现这样的错误:
在这里插入图片描述

如果需要定义新的构造函数(有一点需要注意的是在构造函数里的super方法必须写在第一行),以下是我写一个简单的问题的一些代码,目的是将super在子类定义新的构造函数这一方面理解得更加清楚。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上我们可以看出super在定义新的构造函数的方面所起的作用,但是 上面有一个地方我也不太清楚,就是Apple的那个类,getAmount()的哪个方法中,如果用this.price,程序就无法运行,但是改为getPrice()就可以了,我知道因为是price是一个私有对象,但还是理解的不清楚,希望有理解的大神帮我解答一下。

super语句必须是子类构造方法的第一条语句。不能在子类中使用父类构造方法名来调用父类构造方法。父类的构造方法不能被子类继承。调用父类的构造方法的唯一途径是使用super关键字,如果子类中没有显式调用,则编译器自动将super();作为子类构造方法的第一条语句。这会形成一个构造方法链。

静态方法中不能使用super关键字。

(2)调用父类的方法语法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行结果:
在这里插入图片描述

子类运用super调用父类一般会发生在父类有一些通用的逻辑可以被执行。如果子类覆盖或者重写了父类的方法,则只有使用super才能在子类中调用父类中被重写的方法。
(3)访问父类的数据域(可以这样用但是没必要这样用)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值