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)不能访问父类中的私有属性和方法;

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

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

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

相关文章

flv怎么转换成mp4格式?

flv怎么转换成mp4格式?视频格式转换是一件习以为常的操作,将flv格式转成mp4可以解决的事情非常多。MP4是一种通用的视频格式,几乎所有设备和平台都支持MP4格式。因此,将FLV格式转换为MP4格式可以增强视频的兼容性,使其…

idea创建公用依赖包项目

创建parent项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…

c++:类和对象(2),对象的初始化和清理

目录 构造函数和析构函数 构造函数语法&#xff1a;类名&#xff08;&#xff09;{} 析构函数语法: ~类名 () {} 例子&#xff1a; 构造函数的分类及调用 两种分类的方式&#xff1a; 三种调用方法&#xff1a; 括号法​编辑 显示法 隐式转换法 拷贝构造函数调用时…

【前端web入门第一天】01 开发环境、HTML基本语法文本标签

文章目录: 1. 准备开发环境 1.1 vs Code基本使用 2.HTML文本标签 2.1 标签语法2.2 HTML基本骨架2.3 标签的关系2.4 注释2.5 标题标签2.6 段落标签2.7 换行与水平线标签2.8 文本格式化标签 1. 准备开发环境 VSCode与谷歌浏览器离线版,安装包评论区自提. VSCode默认安装位置:C…

离线编译 onnxruntime-with-tensortRT

记录为centos7的4090开发机离线编译onnxruntime的过程&#xff0c;因为在离线的环境&#xff0c;所以踩了很多坑。 https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html 这里根据官网的推荐安装1.15 版本的onnx 因为离线环境&#xff0c;所以很…

微信小程序如何做到高效引流?-数灵通

随着微信小程序制作门槛的降低&#xff0c;大量的小程序如雨后春笋般涌现&#xff0c;其中小程序商城类型尤为众多。然而&#xff0c;由于微信自身的流量有限&#xff0c;对于大多数小程序商城而言&#xff0c;获取足够的流量成为了一大挑战。 针对这一问题&#xff0c;我们可以…

【Python编程工具】【ssh连接Docker容器】如何使用Docker容器里的python环境,如何调试在容器中的代码

文章目录 方案一览Gateway软件介绍启动容器配置apt源在容器中安装SSH服务器配置SSH服务器生成SSH密钥启动SSH服务为root创建密码连接到容器使用Gateway 方案一览 本篇博客将介绍如何在Docker容器中打开SSH连接服务&#xff0c;以及如何使用JetBrains Gateway软件进行代码调试。…

C++ | 六、栈 Stack、队列 Queue

栈的基础知识 栈&#xff08;stack&#xff09;是一种数据结构&#xff0c;在C中属于STL&#xff08;标准库&#xff09;特点&#xff1a;先进后出 栈的使用&#xff1a; 一、引入头文件<stack>二、创建栈变量&#xff08;类似容器、集合的创建方式&#xff09;&#xf…

GNSS模块引领共享出行新纪元:创新微公司的技术创新之路

共享出行服务正在成为城市交通中不可或缺的一环&#xff0c;而全球导航卫星系统&#xff08;GNSS&#xff09;模块的应用为这一领域注入了新的活力。创新微公司通过其先进的GNSS技术&#xff0c;为共享出行服务提供了更智能、高效的解决方案。本文将探讨创新微公司的GNSS模块在…

java(渣哇)------输入与输出语句(详解) (๑•̌.•๑)

目录 一.java的输出语句&#xff1a; System.out.println() -----输出并换行 System.out.print() -----输出但不换行 System.out.printf() -----类似C语言的printf()输出语句,按格式进行输出 二.java的输入语句&#xff1a; 2.1-----Scanner的基础用法&#xff1a; 2.2…

bash 5.2中文修订4

Compound Commands 复合命令 复合命令是 shell 编程语言的结构。每个构造都以保留字或控制运算符开始&#xff0c;并以相应的保留字或运算符终止。与复合命令关联的任何重定向&#xff08;请参阅 Redirections &#xff09;都适用于该复合命令中的所有命令&#xff0c;除非显式…

AI-数学-高中-8-函数奇偶性

原作者视频&#xff1a;函数】6函数奇偶性&#xff08;易-中档&#xff09;_哔哩哔哩_bilibili 示例&#xff1a; 已知奇偶性求解析式&#xff1a; 奇偶、单调函数综合示例&#xff1a;