当前位置: 首页 > news >正文

为什么在Java中super与this不能共存于子类构造器中,其中this起什么作用

在 Java 中,super 和 this 是两个关键字,它们在子类的构造器中有特定的用途和限制。

super 关键字:

super 用于从父类(超类)访问成员(属性和方法)或者调用父类的构造方法。
在子类的构造器中,super 只能用来显式调用父类的构造方法,并且必须放在构造器的第一行,因为构造器的第一条语句就是隐式地调用父类的构造器。
this 关键字:

this 用于引用当前对象,可以用于访问当前类的成员变量、方法或者调用当前类的其他构造器。
在构造器中,this 用于调用当前类中的其他构造器,这称为构造器的重载链。
为什么 super 和 this 不能共存于子类构造器中?

在 Java 中,super 和 this 不能共存于子类的同一个构造器中的原因是它们各自有不同的用途,并且在构造器的执行顺序上有严格的规定:

构造器的第一条语句总是隐式或者显式地调用 super(),即父类的构造器。如果显式调用 super(),则它必须是构造器中的第一条语句。
this() 用于调用同一个类中的其他构造器,它也必须位于构造器的第一行,因为它需要在构造器的执行流程开始之前确定使用哪个构造器。
由于 super 和 this 都必须放在构造器的第一行,且每个构造器只能有一个第一条语句,因此它们不能同时出现在同一个构造器中。
this 的作用:

在子类的构造器中,this 起到以下作用:

调用当前类的其他构造器:当一个类有多个构造器时,可以使用 this 来调用同一个类中的其他构造器,这样可以避免代码重复,并且可以创建一个构造器的重载链。
引用当前对象:在构造器中,this 可以用来引用当前正在创建的对象,这在需要在构造器中访问对象的属性或方法时非常有用。
以下是一个简单的例子,展示了 this 在构造器中的使用:


public class Person {private String name;private int age;public Person(String name) {this(name, 0); // 调用另一个构造器}public Person(String name, int age) {this.name = name;this.age = age;}
}

在这个例子中,this(name, 0) 调用了 Person 类中的另一个构造器,传递了 name 参数,并默认设置了 age 参数为 0。这里 this 用于在构造器之间建立联系,而不是用于访问成员变量。

http://www.lryc.cn/news/500079.html

相关文章:

  • Hypothesis:高效的 Python 测试工具
  • Terminus Calculator 计算原理分享
  • Wwise 使用MIDI文件、采样音频
  • 在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案
  • 【RocketMQ 源码分析(一)】设计理念与源码阅读技巧
  • 独立ip服务器有什么优点?
  • 如何使用Python库连接Redis
  • Vant UI +Golang(gin) 上传文件
  • 【Unity高级】如何实现粒子系统的间歇式喷射
  • 通过linux命令获取自选股票价格及大盘涨跌幅
  • 透彻理解并解决Mockito模拟框架的单元测试无法运行的问题
  • vue3字典数据的显示问题(使用hooks解决)
  • Elasticsearch 单节点安全配置与用户认证
  • 二分查找(带图详解)
  • 【Git】:标签管理
  • 物品识别 树莓派 5 YOLO v5 v8 v10 11 计算机视觉
  • 单片机软件工程师前景分析
  • 在Java中几种常用数据压缩算法的实现及其优劣势
  • Word——如何打出 符号中的 1、2、3等带圆圈的序号
  • 操作系统之进程与线程
  • 代码随想录算法训练营打卡第35天:背包问题
  • 【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作
  • vscode(一)安装(ubuntu20.04)
  • 利用永恒之蓝对win7进行键盘记录
  • 万字长文解读深度学习——dVAE(DALL·E的核心部件)
  • RL仿真库pybullet
  • file_get_contents函数导致网站卡死响应超时
  • 如何使用C#与SQL Server数据库进行交互
  • #渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(5)进阶模式-MITM中间人代理与劫持(上)
  • vue3 项目搭建-9-通过 router 在跳转页面时传参