面向对象【this关键字】

news2025/7/26 19:28:53

this关键字

文章目录

  • this关键字
  • 基本作用
    • 调用变量
    • 调用方法
    • 调用构造器
    • this 关键字的限制

this关键字

  1. 它在方法(实例方法或非 static 的方法)内部使用,表示调用该方法的对象
  2. 它在构造器内部使用,表示该构造器正在初始化的对象。

基本作用

  1. 引用当前对象:在类的方法内部,this 可以用来引用当前对象。这是非常重要的,因为在面向对象编程中,一个类的方法通常会被多个对象调用。使用 this 关键字可以确保你正在操作的是调用方法的那个对象。
  2. 区分成员变量和方法参数:有时,方法的参数名与成员变量名相同,这可能导致混淆。this 可以帮助我们明确指定操作的是成员变量还是方法参数,提高代码的可读性。

调用变量

this 可以用来引用当前对象的成员变量 ,this.name 表示当前对象的 name 成员变量,而 name 表示方法参数。使用 this 可以清晰地区分两者,避免歧义。

public class Person {
    String name;
    
    public void setName(String name) {
        this.name = name;
    }
}

调用方法

class Person{
	private String name ;
	private int age ;
	public Person(String name,int age){
		this.name = name ; 
		this.age = age ; 
	 }
	 public void setName(String name){
		 this.name = name;
	 }
	 public void setAge(int age){
		 this.age = age;
	 }
	public void getInfo(){
		System.out.println("姓名:" + name) ;
		this.speak();
	}
	public void speak(){
		System.out.println(“年龄:” + this.age);
	} 
}

调用构造器

this 可以作为一个类中构造器相互调用的特殊格式。
this():调用本类的无参构造器
this(实参列表):调用本类的有参构造器

public class Student {
 private String name;
 private int age;
 
	 // 无参构造
	 public Student() {
		// this("",18);//调用本类有参构造器
	 }
	 
	 // 有参构造
	 public Student(String name) {
		 this();//调用本类无参构造器
	 	this.name = name;
	 }
 
	 // 有参构造
	 public Student(String name,int age){
		 this(name);//调用本类中有一个 String 参数的构造器
		 this.age = age;
	 }
 
	 public String getName() {
		 return name;
	 }
 
	 public void setName(String name) {
		 this.name = name;
	 }
 
	 public int getAge() {
		 return age;
	 }
 
	 public void setAge(int age) {
		 this.age = age;
	 }
 
	 public String getInfo(){
		 return "姓名:" + name +",年龄:" + age;
	 }
  }

this 关键字的限制

尽管 this 非常有用,但有一些限制和注意事项:

  1. this 不能在静态方法中使用,因为静态方法不属于任何特定对象,而是属于整个类。
  2. this 只能在方法内部使用,无法在方法外部使用。
  3. 在构造方法中,this 的调用必须作为构造方法的第一条语句。同时使用 this 和 super 关键字在同一个构造方法中是不允许的。

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

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

相关文章

如何将 ruby 打包类似于jdk在另一台相同架构的机器上面开箱即用

需求 目前工作中使用到了ruby作为java 项目的中转语言,但是部署ruby的时候由于环境的不同会出现安装依赖包失败的问题,如何找到一种开箱即用的方式类似于java 中的jdk内置jvm这种方式 解决 TruffleRuby 完美解决问题,TruffleRuby 是使用 T…

5.13.Post方法进行线程切换

在上节课中呢,我向你介绍接口调用过程中啊,曾经看到过post方法。当时我已经向你解释过pose方法呢,就是从一个线程切换到另外一个线程,那整个的过程呢,非常简单,就是从发送线程创建一个消息。塞到接收线程的…

指纹识别之dns

https://ephen.me/2017/dns-tcp/ https://c.biancheng.net/view/6457.html https://www.jianshu.com/p/b483300378af https://www.cnblogs.com/549294286/p/5172448.html wireshark数据包分析 Packet Details Pane(数据包详细信息), 在数据包列表中选择指定数据包,…

nodejs+vue智慧补助系统的设计与实现-计算机毕业设计

随着网络技术的不断发展,多媒体技术应用渐渐的出现在教育领域中,智慧补助系统已经成为教育发展的一个热门话题。 在众多网络开发技术中,nodejs是当前很热门的一种软件,因为它可以进行数据库操作及方便用户控制管理。 在各学校的教…

广播域与冲突域详解

广播域与冲突域详解 一般普遍认为一个HUB(集线器)就是一个冲突域,而使用交换机就可以隔离冲突域。但是无论是HUB 还是交换机它们都具有广播域。HUB 和交换机的区别:同一个 HUB 的所有端口都在同一个广播域和同一个冲突域内的。而…

NIFI1.23.2_最新版_性能优化通用_技巧积累_随时更新---大数据之Nifi工作笔记0063

nifi好用,但是对机器的性能要求也高,如果性能达不到,就会导致,问题发生,比如,队列里显示有内容,但是实际上队列是空的,清也清不掉,只能重启,很麻烦. 关于优化:1.配置前端页面刷新的间隔时间默认30秒,我们可以自己需要看的时候手动刷新我们改成300sec 2.修改CPU阻塞时间,提高CPU…

C++-实现一个简单的菜单程序

C-实现一个简单的菜单程序 1,if-else语句实现1.1,代码实现1.2,功能检测 2,switch语句实现2.1,代码实现2.2,功能检测 1,if-else语句实现 实现一个简单的菜单程序,运行时显示"Men…

节日活动软文怎么写?媒介盒子为您解答

不管是春节、除夕这类传统节日,还是万圣节、情人节这类舶来节日,又或者是双十一、618这类电商节。品牌方只要在节日中举办活动,都能够提升品牌曝光率,还能有效减少运营时间成本提高效率,节日活动软文能够帮助商家宣传活…

Java实验四

要求:设计一个文字字体设置窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。并模拟在不同操作系统下的显示效果。添加事件处理机制,要求实现如下功能: 当在文本框中输入…

C++学习初探---‘C++面向对象‘-继承函数重载与运算符重载

文章目录 前言继承继承是什么?三种访问权限的继承: 函数重载与运算符重载函数重载运算符重载可重载运算符&不可重载运算符 前言 第三次学习记录,依旧是C面向对象的内容。 继承 继承是什么? C中的继承是一种面向对象编程&am…

Spring5学习笔记汇总

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Spring专栏 ✨特色专栏: M…

[AUTOSAR][诊断管理][ECU][$2F] 通过ID控制IO

文章目录 一、简介服务功能功能描述应用场景服务请求请求格式控制参数(IOCP)请求实例服务响应响应格式正响应实例负响应NRC支持二、 示例代码2f_io_ctl_by_id.c一、简介 2F诊断服务主要在车身域比较常见,比如车窗控制,传感器开关、执行器控制等。 UDS诊断服务协议都以ISO标准…

VM Ware在桥接模式下无法联网

目录 一,说明二,桥接模式下选择对应网卡三,物理机设置静态IP四,虚拟机设置静态IP四,测试 一,说明 VM Ware是一款常用的虚拟软件,我们可以在Windows系统上安装该软件,加载相应的镜像…

【T3】彻底关闭服宝

【问题描述】 畅捷通T3登录后, 右下角会出现服宝窗口,需要手工退出。 但是每次重新登录账套后都会出现,非常烦;并且界面空白。 【解决方法】 在软件的安装目录下\UFSMART\Portal,找到【url.ini】文件。 用记事本打开…

如何用ChatGPT加速生成一份有图有文的简报ppt,实战案例教学

今天小编给大家提供一个小技巧,让大家在让chatgpt帮你写ppt的时候自动把图也配上。 这个prompts经过小编反复调试,达到了一个较好的效果,就是下面这条,大家可以复制发送到我们AI写稿专家公众号里进行生成: 以「个人知…

Unity 粒子特效-第四集-光球闪烁特效

一、特效预览 二、制作原理 光球素材资源 链接:https://pan.baidu.com/s/1XzWpQU2zX_wupMXSW7RxwA?pwdvu5r 提取码:vu5r 1.素材介绍 仔细看,我们的粒子贴图是(如下),一颗球球 2.步骤介绍 1.光球动画的…

PyCharm下载和安装教程(包含配置Python解释器)

PyCharm 是 JetBrains 公司(www.jetbrains.com)研发,用于开发 Python 的 IDE 开发工具。图 1 所示为 JetBrains 公司开发的多款开发工具,其中很多工具都好评如潮,这些工具可以编写 Python、C/C、C#、DSL、Go、Groovy、…

服务器遭受攻击如何处理(记录排查)

本文的重点是介绍如何鉴别安全事件以及保护现场的方法,以确保服务器负责人能够在第一时间对安全攻击做出反应,并在最短时间内抵御攻击或减少攻击所带来的影响。 在服务器遭遇疑似安全事件时,通常可以从账号、进程、网络和日志四个主要方面进…

学习MySQL数据库之前非看不可的一篇文章

目录 1、数据库概念1.1主流数据库 3、基本使用2.1 连接服务器2.2 服务器、数据库、表关系2.3 见见猪跑 3、MySQL架构4、SQL分类 1、数据库概念 数据库(Database)是一个有组织的数据集合,用于存储、管理和检索信息。它是一个计算机系统中的关键…

【错误解决方案】ModuleNotFoundError: No module named ‘zarr‘

1. 错误提示 在python程序,尝试导入一个名为zarr的模块,但Python提示找不到这个模块。 错误提示:ModuleNotFoundError: No module named ‘zarr‘ 2. 解决方案 这可能是因为你尚未安装这个模块或者安装过程中出现了问题。 zarr是一个用于存…