Java——this构造方法标准类

一:this用法

当成员变量与方法中的形参名相同时,采用就近原则;

如下,调用 method 时,两个 name 均为方法中形参的 name , 即采用就近原则;

public class ThisDemo {public String name;                 //成员变量public int age;public void method(String name){   //形参System.out.println(name+"hello"+name);}}
public class Thisclass {public static void main(String[] args) {ThisDemo a=new ThisDemo();a.name="呵呵呵";a.method("刘备备");}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14461:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo Thisclass
刘备备hello刘备备进程已结束,退出代码0

为了避免这种情况,我们采用 this. 进行处理:

public class ThisDemo {public String name;                 //成员变量public int age;public void method(String name){   //形参System.out.println(this.name+"hello"+name);}}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14718:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo Thisclass
呵呵呵hello刘备备进程已结束,退出代码0

因此,我们知道,this一定出现在方法里,其目的是为了在重名的情况下区分成员变量与局部变量;

this.的变量一定指的是成员变量;

 

二:构造方法

格式:public  类名 ( (可以添加参数)){          } ;

1)我们在创建对象的同时就是在调用构造方法;

public class ThisDemo {public String name;                 //成员变量public int age;public ThisDemo(){System.out.println("构造方法执行啦");}
}
public class Thisclass {public static void main(String[] args) {ThisDemo a=new ThisDemo();}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14535:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo Thisclass
构造方法执行啦进程已结束,退出代码0

 

(2)构造方法是编译器默认"赠送"的,当然内容为空,执行时什么也没有;

public class Thisclass {public static void main(String[] args) {ThisDemo a=new ThisDemo();}
}
public class ThisDemo {public String name;                 //成员变量public int age;
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14731:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo Thisclass进程已结束,退出代码0

(3)我们可以自己创建构造方法,但是这时编译器就不会“赠送”了;

 

(4)存在两个及以上构造方法时,称为构造方法的重载;

        重载:方法名相同,参数列表不同

        含参构造方法可以省去我们使用 set 方法去专门赋值给成员变量; 

public class ThisDemo {private String name;                 //成员变量private int age;public ThisDemo( ){//无参构造方法System.out.println("这是我自己自己定义的");}public ThisDemo(String name,int age ){//带(全)参构造方法this.name=name;this.age=age;System.out.println(this.name+"\t"+this.age);}
}
public class Thisclass {public static void main(String[] args) {ThisDemo a=new ThisDemo();ThisDemo b=new ThisDemo("刘备备",66);}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14945:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo Thisclass
这是我自己自己定义的
刘备备	66进程已结束,退出代码0

(5)可是,当我们需要修改成员变量的值时,我们还得通过 set/get 方法去修改,因此我们还必须使用 set/get 方法;

public class ThisDemo {private String name;                 //成员变量private int age;public ThisDemo( ){//无参构造方法System.out.println("这是我自己自己定义的");}public ThisDemo(String name,int age ){//带(全)参构造方法this.name=name;this.age=age;System.out.println("有参构造方法执行了");}public void setAge(int age){this.age=age;}public int getAge(){return this.age=age;}public void setName(String name){this.name=name;}public String getName( ){return this.name=name;}
}
public class Thisclass {public static void main(String[] args) {ThisDemo a=new ThisDemo();ThisDemo b=new ThisDemo("刘备备",66);//重新赋值b.setAge(99);b.setName("不知道");System.out.println(b.getName()+"\t"+b.getAge());}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=1723:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo Thisclass
这是我自己自己定义的
有参构造方法执行了
不知道	99进程已结束,退出代码0

注意:有参构造方法可以将数据直接赋给成员变量,避免多次调用 set 方法,但是我们还是需要创建 set/get 方法来修改成员变量;

三:标准类

(1)使用 private 进行封装;

(2)含无参构造方法;

(3)每个成员变量都有一对 set / get 方法;

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

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

相关文章

Linux 基础IO篇

1. C语言中的文件操作 1 #include<stdio.h>2 3 int main()4 {5 FILE* pf fopen("log.txt", "w");6 if(NULL pf)7 {8 perror("fopen");9 return 1; 10 }11 fprintf(pf, &quo…

第二届生成式AI应用创新大赛

&#x1f525; 第二届生成式AI应用创新大赛 &#x1f331; 初赛正如火如荼地进行中&#xff0c;报名截止时间是5月15日&#xff01; ⏰ ⭐ 最激动人心的总决赛将于5月30日在亚马逊上海峰会上举行&#xff0c;届时会有权威评委现场点评&#xff01; &#x1f3a4; &#x1f3…

Intellij IDEA 同一段落中同时选中修改多个相同的单词

Intellij IDEA 同一段落中同时选中修改多个相同的单词 IDEA 在实际应用中&#xff0c;有时需要同时修改多个单词的情况&#xff0c;在这里提供两种方法 第一种 在一段落中选中高亮单词&#xff0c;按 ALT J 向下选中多个想要修改的单词&#xff0c;然后[直接修改] (https://so…

GitPython 使用教程

GitPython 使用教程 GitPython 是一个用于与 Git 版本控制系统进行交互的 Python 库。它提供了简单的接口&#xff0c;让你可以通过 Python 代码执行 Git 命令和操作 Git 仓库。 1. 安装 GitPython 你可以使用 pip 在命令行中安装 GitPython&#xff1a; pip install gitpy…

327_C++_C风格和C++风格写文件操作

C、C++区别开: 将 std::string 对象 tmp_nvr_style 的内容复制到字符数组 tmpRcFileData 中。然而,这样做存在几个问题: 1、tmpRcFileData 的大小应该至少为 tmp_nvr_style.size() + 1 以容纳字符串的终止字符 \0。 2、std::copy 不会添加终止字符。 使用 C 风格的字符串(…

vue3 + ts实现canvas绘制的waterfall

实际运行效果(仅包含waterfall图表部分) component.vue <template><div ref="heatmap" :style="{ height: props.containerHeight + px }" /> </template><script setup> import ColorMap from "colormap"; import…

一次有关 DNS 解析导致 APP 慢的问题探究

一、业务背景 HTTTPDNS AWS Router53 APP 使用 HTTPDNS&#xff0c; 为解决 DNS 解析生效慢&#xff0c; DNS 劫持等问题。 我们 IOS 和安卓都是使用了 HTTPDNS。 域名托管在 AWS Router53。 域名有多个解析(基于延迟)&#xff0c;为了解决就近接入。 示例配置 ai.baidu.c…

首席数据官CDO行业背景主要职责是什么?

首席数据官&#xff08;Chief Data Security Officer&#xff0c;简称CDO&#xff09;&#xff0c;是指在企业中负责整个机构的数据安全策略&#xff0c;监控、治理、控制、协调企业内部的数据安全工作、政策制定和有效利用的高级管理人员。包括信息技术、人力资源、通信、合规…

英语学习笔记3——Sorry, sir.

Sorry, sir. 对不起&#xff0c;先生。 词汇 Vocabulary umbrella n. 伞&#xff0c;保护伞 注意读音 [ʌm’brelə] 英国人离不开雨伞。 please 请 特殊用法&#xff1a;让路&#xff08;升调&#xff09;      用餐礼仪&#xff08;平调&#xff09;      求求你…

domain-id(OSPF)

命令功能 domain-id命令用来配置OSPF域标识符。 undo domain-id命令用来恢复缺省值。 缺省情况下&#xff0c;域标识符的值为NULL。 命令格式 domain-id { null | domain-id [ type type value value | secondary ] * } undo domain-id [ domain-id [ type type value val…

10.Java对象内置结构

文章目录 Java对象内置结构1.Java对象的三个部分1.1.对象头1.2.对象体1.3.对齐字节 2.对象结构中核心字段的作用2.1.MarkWord(标记字)2.2.Class Pointer(类对象指针)2.3.Array Length(数组长度)2.4.对象体2.5.对齐字节 3.Mark Word的结构信息3.1.不同锁状态下的Mark Word字段结…

在vcenter 资源池中创建安装虚拟机

打开vSphere客户端并登录到vCenter服务器。在左侧导航栏中&#xff0c;选择您要在其中创建虚拟机的资源池。在资源池的摘要选项卡中&#xff0c;单击"创建虚拟机"按钮。在虚拟机创建向导中&#xff0c;填写虚拟机的名称、操作系统和其他配置选项。在选择存储选项中&a…

耐高温轴承新选择:锅炉、固化炉、无油自润滑,稳定又可靠

江苏鲁岳轴承制造有限公司是一家专业从事高温轴承研发、生产和销售的企业。该公司的高温轴承产品具有出色的技术性能和广泛的应用领域。 以下是江苏鲁岳耐高温轴承的技术介绍&#xff1a; 承载能力强&#xff1a;江苏鲁岳的高温轴承通常采用高温合金、陶瓷等特殊材料制造&…

人工智能_大模型049_模型微调009_llama2模型训练_代码分析和实现_代码记录---人工智能工作笔记0184

以上是项目的整体结构,其中上一节我们看了chatglm3目录下,对chatglm3模型的训练部分的代码,然后 这里的llama2目录下是对llama2模型进行训练的代码. 然后web_demo目录是,对web浏览器中,使用chatglm3,以及llama2.py进行的封装下一节我们再看这个部分 E:\2024\人工智能\fine-tun…

[疑难杂症2024-004] 通过docker inspect解决celery多进程记录日志莫名报错的记录

本文由Markdown语法编辑器编辑完成&#xff0e; 1. 前言 最近我负责的一个服务&#xff0c;在医院的服务器上线一段时间后&#xff0c;利用docker logs查看容器的运行日志时&#xff0c;发现会有一个"莫名其妙"的报错&#xff0e;报错的大致内容就是&#xff0c;ce…

docker的commit命令使用制作镜像

docker run -it ubuntu 最基础的ubuntu启动后安装vim 的命令 apt-get update apt-get -y install vim docker commit -m"my_test_ubuntu" -a"za" 80977284a998 atljw/myubuntu:1.0 将本地镜像推送到阿里云 首先登录阿里云服务-控制台 记得一定要设定设…

JVS物联网设备连接管理:支持手动与定时启停

通道连接的启停 功能说明 为了更灵活地管理设备连接&#xff0c;平台需要在设备连接的新增和编辑功能中增加启停策略的配置。支持手动启停和定时启停两种选项&#xff0c;以便根据实际需求对设备连接进行灵活的控制。 功能 手动启停&#xff1a; 用户可以选择手动启停作为…

节后上班,想发疯!3 步教你用 AI 写个好笑又上头的发疯文学大师

引: 这个五一过得真的很不爽,一来一回浪费了两个周末,发现大家都有要疯了,正好最近比较迷发疯文学,我们就用 AI 来写一个搞笑的发疯文学大师吧! 第一步:先给它取一个好听的名字: 你是发疯文学【失常版】,名字叫小风子。 当我说小风子,你就切换到小风子的身份,和我…

uniapp uni-push 1.0 APP消息推送实现

1.获取cid plus.push.getClientInfoAsync((info) > {let cid info["clientid"]; }); 2.在manifest.json中找到App模块配置&#xff0c;勾选Push(消息推送)&#xff0c;重新打一个自定义基座&#xff0c;再真机运行 3.在DCloud官网使用获取到的cid自测消息是否可…

python使用API实现word文档翻译

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概述Visual St…