Java中的this和super

①this

  • 在Java中,this关键字代表当前对象的引用。它可以用于以下几个方面:

    1. 引用当前对象的成员变量:使用this关键字可以引用当前对象的成员变量,以区分成员变量和方法参数或局部变量之间的命名冲突。例如,如果一个方法的参数名与成员变量名相同,可以使用this关键字来引用成员变量。

    2. 调用当前对象的构造方法:在一个类的构造方法中,可以使用this关键字来调用同一个类中的其他构造方法。这种方式可以避免代码的重复,提高代码的复用性。

    3. 返回当前对象的引用:在一个方法中,可以使用this关键字来返回当前对象的引用。这在链式调用或方法嵌套的情况下非常有用。

    4. 作为方法参数传递:this关键字可以作为方法参数传递给其他方法,以便在方法中引用当前对象。

    需要注意的是,this关键字只能在非静态方法和构造方法中使用,因为静态方法和构造方法是与类相关而不是与对象相关的。

    总结:this关键字在Java中代表当前对象的引用,可以用于引用当前对象的成员变量、调用当前对象的构造方法、返回当前对象的引用以及作为方法参数传递。它在解决命名冲突、提高代码复用性和实现链式调用等方面非常有用。

  • Java虚拟机会给每个对象分配this,代表当前对象。

②对象在JVM的存在形式

字符串属于引用数据类型,所以把字符串放在方法区的常量池中,而基本数据类型放在堆中即可;

在new对象的时刻,会把类的信息加载到方法区; 

③this的使用和注意细节;

(1)this关键字可以用来访问本类的属性,方法,构造器;

(2)this用于区分当前类的属性和局部变量;

(3)访问成员方法的语法:this.方法名(参数列表);

(4)访问构造器语法:this(参数列表);注意只能在构造器中使用;

注意:只能放在构造器第一行

(5)this不能在类定义的外部使用,只能在类定义的方法中使用;

③super

  • 在Java中,super是一个关键字,用于引用父类的成员变量、方法和构造方法。

    1. 引用父类的成员变量: 当子类和父类拥有同名的成员变量时,可以使用super关键字来引用父类的成员变量。这样可以避免子类中的成员变量被隐藏。例如,super.x表示引用父类的成员变量x。

    2. 调用父类的方法: 当子类和父类拥有同名的方法时,可以使用super关键字来调用父类的方法。这样可以在子类中重写父类的方法,同时又能调用父类的方法。例如,super.method()表示调用父类的method方法。

    3. 调用父类的构造方法: 当子类的构造方法需要调用父类的构造方法时,可以使用super关键字来调用父类的构造方法。这样可以确保父类的初始化工作得以完成。例如,super()表示调用父类的无参构造方法,super(x)表示调用父类的带有参数x的构造方法。需要注意的是,super关键字在构造方法中只能用于调用父类的构造方法,并且必须是构造方法的第一条语句。

    需要注意的是,super关键字只能在子类中使用,并且只能用于访问父类的成员变量、方法和构造方法。在静态方法中不能使用super关键字,因为静态方法属于类而不是对象,没有this和super的引用。

④super的基本注意

(1)不能访问父类中的私有属性和方法;

只能放在第一句,只能出现一句;

⑤super和this的比较:

No.
No.区别点thissuper
1

访问属性

访问本类中的属性,

如果本类没有此属性则从父类中继续查找

访问父类中的属性
2

调用方法

访问本类中的方法,

如果没有则从父类中继续查找

从父类开始查找方法
3调用构造器调用本类构造器,必须放在构造器的首行

调用父类构造器,

必须放在子类构造器首行

4特殊表示当前对象

 子类中访问父类对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/647286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode做题总结 226. 翻转二叉树

226. 翻转二叉树 代码1 报错代码2 报错代码3 正确。 代码1 报错 class Solution {public TreeNode invertTree(TreeNode root) {// TreeNode _root root; // 这是在保证// _root preOrderTree(root);// return root;root preOrderTree(root);return root;}public TreeNode …

【机器学习300问】15、什么是逻辑回归模型?

一、逻辑回归模型是为了解决什么问题? 逻辑回归(Logistic Regression)是一种广义线性回归分析模型,尤其适用于解决二分类问题(输出为两个类别)。 (1)二分类举例 邮件过滤&#xff…

Java Web(五)--DOM

介绍 DOM 全称是 Document Object Model 文档对象模型; DOM 是 W3C(万维网联盟)的标准。 DOM 定义了访问 HTML 和 XML 文档的标准: "W3C 文档对象模型 (DOM) 是中立于平台和语言的接口&#xff0…

pdf怎么转换成jpg图片?pdf转图片工具用它就够了

有时候,我们可能需要将pdf文档转换为图片格式,以便于文档的处理和管理。通过将pdf转换为图片,可以将每一页pdf转换为独立的图片文件,便于整理、存储和管理,如果您有多个PDF文件需要转换成图片,可以批量pdf转…

Modern C++ std::bind的实现原理

1. 前言 前面写过《std::function从实践到原理》,管中规豹了std::function的一点点原理,不过还有一个与std::function密切相关的函数std::bind, 允许编程者绑定几个参数,本文着重介绍它的实现原理。不介绍一下它,有点吃肉不吃蒜味…

npm安装卡住问题(最新版)

npm安装卡住问题(最新版) 背景: ​ 最近这两天用npm安装一些包的时候,发现一直卡住: 报错: idealTree:npm: sill idealTree buildDeps之前能用的现在不能用了,我一想,是不是源头的问题,还真是…

C语言每日一题(48)回文链表

力扣 234 回文链表 题目描述 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2&#xff1…

Redis性能运行参数的监测工具 - WGCLOUD

WGCLOUD是一款开源免费的运维监控平台,可以监测Redis的运行情况,比如redis的Key数量,过期Key数量,Redis的端口号,Redis的版本,同步状态,集群模式,使用内存等等数据 中间件Redis监测…

FinBert模型:金融领域的预训练模型

文章目录 模型及预训练方式模型结构训练语料预训练方式 下游任务实验结果实验一:金融短讯类型分类实验任务数据集实验结果 实验二:金融短讯行业分类实验任务数据集实验结果 实验三:金融情绪分类实验任务数据集实验结果 实验四:金融…

瑞_数据结构与算法_二叉搜索树

文章目录 1 什么是二叉搜索树1.1 二叉搜索树的特征1.2 前驱后继 2 二叉搜索树的Java实现2.1 定义二叉搜索树节点类BSTNode泛型key改进 2.2 实现查找方法get(int key)递归实现非递归实现 ★非递归实现 泛型key版本 2.3 实现查找最小方法min()递归实现非递归实现 ★ 2.4 实现查找…

Django从入门到精通(三)

目录 七、ORM操作 7.1、表结构 常见字段 参数 示例 7.2、表关系 一对多 多对多 第一种方式 第二种方式 7.3、连接MYSQL 7.4、数据库连接池 7.5、多数据库 读写分离 分库(多个app ->多数据库) 分库(单app) 注意…

狗东云搭建幻兽帕鲁(奶妈级别)

使用狗东云搭建幻兽帕鲁 同配置狗东云比腾讯云便宜,2核2G服务器仅50元1年,4核8G服务器458元1年,点击链接直达. 进入页面会跳转到注册,先注册账户,注册好后页面跳转,没有跳转点这里,选择页面左侧…

[AIGC 大数据基础] 浅谈hdfs

HDFS介绍 什么是HDFS? HDFS(Hadoop Distributed File System)是Apache Hadoop生态系统的一部分,是一个分布式文件系统。它被设计用于存储和处理大规模数据集,并且能够容错、高可靠和高性能地处理文件。 HDFS是为了支…

2024转行程序员的请注意:均月薪在40-70k

前言 2023年,对大多数行业来说都是不太好过的一年。 对程序员来说也是如此,很多粉丝朋友都在说android工作特别难找,一个岗位都是几千份简历........大家心里都是特别的焦虑,本以为2024年就业情况会有好转,但实际上并…

PHP - Yii2 异步队列

1. 前言使用场景 在 PHP Yii2 中,队列是一种特殊的数据结构,用于处理和管理后台任务。队列允许我们将耗时的任务(如发送电子邮件、push通知等)放入队列中,然后在后台异步执行。这样可以避免在处理大量请求时阻塞主应用…

[GXYCTF2019]BabySQli1

单引号闭合,列数为三列,但是没有期待的1 2 3回显,而是显示wrong pass。 尝试报错注入时发现过滤了圆括号,网上搜索似乎也没找到能绕过使用圆括号的方法,那么按以往爆库爆表爆字段的方法似乎无法使用了 在响应报文找到一…

ORM-07-querydsl 入门介绍

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.(手写简易版 mybatis) 1. 介绍 1.1 背景 Querydsl的诞生源于以类型安全的方式维护HQL查询的需求。逐步构建HQL查询需要进行字符串连接,导致代码难以…

32个Java面试必考点-06常用工具集

本课时主要介绍常用的工具,将会讲解三个知识点: & JVM 相关工具的作用和适用场景; & Git 常用命令和工作流; & Linux 系统中常用分析工具。 常用工具汇总 常用工具汇总如下图所示。 说明:这里列出的都…

k8s的图形化工具--rancher

什么是rancher? rancher是一个开源的企业级多集群的k8s管理平台 rancher和k8s的区别 都是为了容器的调度和编排系统,但是rancher不仅能够调度,还能管理k8s集群,自带监控(普罗米修斯) 实验部署 实验架构…

电容主要特点和作用,不同类型的电容区别

电容 两个相互靠近的金属板中间夹一层绝缘介质组成的器件,当两端存在电势差时,由于介质阻碍了电荷移动而累积在金属板上,衡量金属板上储存电荷的能力称之为电容,相应的器件称为电容器。 电容(Capacitance&#xff09…