关于this和构造器的理解

1.类中的this关键字表示当前对象的引用。它可以被用于解决变量名冲突问题,或者在一个方法中调用类的另一个方法。如果在方法中没有明确指定要使用哪个变量,那么编译器就会默认使用this关键字来表示当前对象。

下面是一个输出this关键字的示例代码:

public class MyClass {private int num;public MyClass(int num) {this.num = num;}public void printNum() {System.out.println("num = " + this.num);}
}
public class ThisTest {public static void main(String[] args) {MyClass myClass = new MyClass(5);myClass.printNum();}
}

在上面的代码中,构造方法中的参数num和类属性num同名,为了避免变量名冲突,我们使用了this关键字来表示类属性num。在printNum方法中,我们使用this关键字来表示当前对象调用的属性num。

2.构造器首先,构造方法是一种特殊的方法,用来创建一个对象并初始化对象的属性。每个类都必须有至少一个构造方法,因为它负责初始化对象的状态。

构造方法的名字必须和类名完全相同,没有返回值类型,包括void。当使用new关键字创建一个对象时,Java编译器会根据参数的类型和数量来匹配合适的构造方法,并自动调用该方法来初始化对象的状态。

构造方法可以有不同的访问修饰符,例如public、private、protected和默认(即不声明访问修饰符)。如果声明为private,该构造方法只能在本类中被访问,其他类无法调用该构造方法,这种情况也被称为私有构造方法

构造方法可以接受参数,这些参数通常用来为对象的属性赋初值。在调用构造方法时,实参传递给形参,构造方法体内使用这些参数来初始化对象的属性。如果没有给出构造方法,Java会默认提供一个无参构造方法,该方法不执行任何操作,仅仅是初始化对象属性的默认值

当一个类有多个构造方法时,Java可以根据参数的不同来自动调用相应的构造方法,这被称为构造方法的重载(overloading)。

下面是一个使用构造方法的示例代码:

public class Book {private String title;private String author;private int pages;public Book(String title, String author, int pages) {this.title = title;this.author = author;this.pages = pages;}public void printInfo() {System.out.println("Title: " + this.title);System.out.println("Author: " + this.author);System.out.println("Pages: " + this.pages);}
}

在上面的代码中,Book类有一个构造方法,用来初始化Book对象的属性。在printInfo方法中,我们打印了Book对象的属性。我们可以通过下面的代码来创建一个Book对象并调用printInfo方法:

public class ConstructorTest {public static void main(String[] args) {//无参构造Book book1 = new Book();System.out.println(book1);book1.printInfo();//有参构造Book book = new Book("Java Programming", "John Smith", 300);System.out.println(book);book.printInfo();}
}

输出结果为:

如果没有给出构造方法,Java会默认提供一个无参构造方法,该方法不执行任何操作,仅仅是初始化对象属性的默认值

通过上面的示例代码,我们可以看到构造方法的作用是在创建对象时对对象进行初始化,以确保对象在使用时能够正常、准确地工作。

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

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

相关文章

【MODBUS】Modbus 主从模式的部署方式

Modbus通信协议通常以主从(Master-Slave)模式进行部署,其中一个设备充当主站(Master),而其他设备充当从站(Slave)。主站负责发起请求,而从站则负责响应这些请求。下面是一…

初学者如何入门Generative AI:看两篇综述,玩几个应用感受一下先!超多高清大图,沉浸式体验

文章大纲 综述与简介从神经网络到Transformer不同种类的深度神经网络transformer 原理与解析BERTGPTTransformer 结构演化与应用历史transformer 在视觉上的应用AIGC 应用快速生成领域初级知识 PPT多人协作数字白板 + 图像生成本地部署大模型进行网站综述生成效果巨好的数字人!…

信息泄露威胁:日本科技巨头遭网络攻击,超40万条数据悬崖边缘!

11月27日下午,日本最主要通讯应用程序Line的运营商、日本LY公司发布公告称,有攻击者通过附属公司的NAVER Cloud系统访问了其内部服务器,可能泄露了数十万条包含用户、员工和业务合作伙伴在内的数据。 这一数据泄露事件发生在10月9日&#xff…

关于你对 Zookeeper 的理解

看看普通人和高手是如何回答这个问题的? 普通人 Zookeeper 是一种开放源码的分布式应用程序协调服务 是一个分布式的小文件存储系统 一般对开发者屏蔽分布式应用开发过过程种的底层细节 用来解决分布式集群中应用系统的一致性问题 高手 对于 Zookeeper 的理解…

并发编程笔记

1、前言 这篇笔记是我花的20多天跟着⿊⻢的并发编程学习做的笔记,地址是b站 ⿊⻢ 并发编程 ,也是我第⼀次 学习并发 编程,所以如果有很多原理讲不清楚的,知识点不全的,也请多多包涵 中间多数图都是直接截⽼师的笔记…

基于Java SSM框架+Vue实现疫情期间医院门诊网站项目【项目源码+论文说明】

基于java的SSM框架Vue实现疫情期间医院门诊网站演示 摘要 21世纪的到来,国家的方方面面、各行各业都在努力与现代的先进技术接轨,智能科技时代崛起的优势,医院门诊管理系统当然也不能排除在外。疫情期间医院门诊管理系统是以实际运用为开发背…

【JVM系列】Class文件分析

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

网工学习6-配置和管理 VLAN

6.1VLAN概念 1> 什么是 VLAN? VLAN 是一种在交换机上划分逻辑网段的二层技术。 2> 为什么要通过交换机划分网段? ① 因为交换机的端口密度比路由器高,并且价格比路由器低,所以组网成本更低。 ② 因为交换机划分网段比…

终端安全管理软件是监控软件吗

有些人在后台问,终端安全管理软件是监控软件吗? 先回答,是监控软件。 因为它具有监控的功能,在很大程度上,是可以用来当做监控软件来用的。 终端安全管理软件是一种集中管理终端设备的软件工具,可以在企业…

猜数字赢金币

充值金币后开始游戏,猜中奖励10金币退出,不中扣除1金币继续。 (笔记模板由python脚本于2023年12月03日 21:52:23创建,本篇笔记适合熟悉程序函数式编程,熟练掌握基本数据类型的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&…

c# datagridview 常用属性设置

1. 列宽自适应 设置属性DataGridViewAutoSizeColumnMode 为AllCells 其他属性值: 属性说明NotSet列的大小调整行为从DataGridView.AutoSizeColumnsMode 属性继承。None列宽不会自动调整。AllCells调整列宽,以适合该列中的所有单元格的内容,包…

linux常用命令-find命令与scp命令详解(超详细)

文章目录 前言一、find命令介绍1. find命令简介2. find命令的基本语法3. 常用的find命令选项和表达式 二、find命令示例用法1. 按照名称进行搜索2. 按照类型进行搜索3. 按照修改时间进行搜索4. 按照文件大小进行搜索5. 对搜索到的文件执行指定的命令6. 删除搜索到的文件 三、sc…

线程池怎么用?---实例讲解

线程池使用实例 先写一个配置类 /*** 线程池配置*/ Configuration public class ThreadPoolConfig {//定义线程前缀public static final String NAME_PRE"test";/*** ExecutorService 这个对象就是线程池,可以点进去他的源码看看* Bean,将ge…

26.Oracle11g的数据装载

Oracle11g的数据装载 一、数据装载概述1、数据装载是什么2、使用SQL*Loader进行数据装载 二、外部表1、外部表概念2、外部表的使用 三、使用外部表数据装载案例1、创建目标表2、准备数据源3、装载数据4、验证数据 一、数据装载概述 1、数据装载是什么 数据装载是指将数据从一…

2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷③

2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷③ 2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷③A模块基础设施设置/安全加固(200分)A-1任务一 登录安全加固(Wi…

400页Python学习PDF笔记,全面总结零基础入门看这一篇足够了

我们都知道Python入门比较简单,但仍有很多想要学习的新手依然卡在基础的安装阶段,尽管如此,网络上的大部分的教程却对这些基础内容都是一带而过,导致许多新手朋友对这些基础知识一知半解,往往一个小问题都需要在网上查…

2023 iOS 八股文

题集大全 1: 谈谈你对KVC的理解 2: iOS项目中引用多个第三方库引发冲突的解决方法 3: GCD实现多读单写 4: 讲一下atomic的实现机制;为什么不能保证绝对的线程安全? 5: Autoreleasepool所使用的数据结构是什么? 6: AutoreleasePoolPage结构体了解么? 7: iOS中内省的几个…

电脑回收站还原的文件在哪里找到?如何找回回收站还原的文件

电脑回收站是一种非常有用的功能,可以帮助我们恢复无意中删除的文件。然而,许多人可能不清楚还原的文件在哪里可以找到。本文将为您带来详细解答,并帮助您找回回收站还原的文件。 电脑回收站还原的文件在哪里找到 当我们使用电脑的回收站功…

element的el-date-picker时间控件,限制选择范围区间天数并且当前之后的日期不可选

element的el-date-picker时间控件&#xff0c;限制选择范围区间天数并且当前之后的日期不可选 HTML部分代码 <el-date-pickerv-model"dateRange"type"datetimerange"value-format"yyyy-MM-dd HH:mm:ss"range-separator"至"start-p…

前端知识笔记(二十三)———云服务器网站遇到HTTPS CC攻击了,有什么办法吗?

目前网站使用SSL证书&#xff0c;用443端口的情况非常普遍&#xff0c;大多数网站&#xff0c;用户都是会选择用证书&#xff0c;这样不仅可以提供数据传输的安全性&#xff0c;增强用户信任和品牌形象&#xff0c;还可以提高网站在搜索结果中的排名&#xff0c;从而增加流量和…