【JAVA】Java基础—面向对象编程:构造方法-构造方法的概念与案例

在Java编程中,构造方法是类的重要组成部分,用于初始化对象的状态,即在创建对象时设置对象的属性。构造方法初始在创建对象时提供必要的参数,从而使对象处于一个有效的状态。

重要性
  1. 对象初始化:构造方法允许我们在创建对象时立即初始化属性,确保对象的状态是有效的。

  2. 代码可读性:使用构造方法可以提高代码的可读性和可维护性,因为它清晰地表明了对象的初始化过程。

  3. 灵活性:构造方法可以有多个重载版本,使得对象可以根据不同的需求进行初始化。

生活中的类比

我们可以将构造方法类比为“制作一个蛋糕”。在制作蛋糕时,我们需要准备好各种原料(如面粉、糖、鸡蛋等),并按照一定的步骤进行混合和烘焙。构造方法就像这个准备和混合的过程,它确保蛋糕(对象)在烘焙(创建)之前是完整的。

二、构造方法的定义

构造方法是与类同名的方法,用于创建对象时初始化对象的状态。构造方法没有返回值,甚至没有void关键字。

1. 构造方法的基本语法
public class ClassName {// 属性private String attribute;// 构造方法public ClassName(String attribute) {this.attribute = attribute; // 初始化属性}
}

代码解释

  • public ClassName(String attribute):这是一个构造方法,它的名称与类名相同,参数为String attribute,用于初始化对象的属性。

  • this.attribute = attribute;this关键字用于区分类的属性和构造方法的参数,确保正确赋值。

三、构造方法的类型

构造方法主要有两种类型:

  1. 无参数构造方法(默认构造方法)

  2. 带参数构造方法

2.1 无参数构造方法

如果一个类没有定义任何构造方法,Java会自动提供一个无参数构造方法。我们可以显式地定义一个无参数构造方法。

public class Person {private String name;private int age;// 无参数构造方法public Person() {this.name = "未知"; // 默认姓名this.age = 0; // 默认年龄}// 带参数构造方法public Person(String name, int age) {this.name = name;this.age = age;}// 显示信息的方法public void displayInfo() {System.out.println("姓名: " + name + ", 年龄: " + age);}
}

代码解释

  • public Person():这是一个无参数构造方法,初始化name为“未知”,age为0。

  • public Person(String name, int age):这是一个带参数的构造方法,允许在创建对象时设置具体的姓名和年龄。

  • displayInfo()方法用于输出对象的信息。

2.2 带参数构造方法

带参数构造方法允许我们在创建对象时提供必要的信息。

public class Main {public static void main(String[] args) {// 使用无参数构造方法创建对象Person person1 = new Person(); // 默认值person1.displayInfo(); // 输出:姓名: 未知, 年龄: 0// 使用带参数构造方法创建对象Person person2 = new Person("Alice", 30);person2.displayInfo(); // 输出:姓名: Alice, 年龄: 30Person person3 = new Person("Bob", 25);person3.displayInfo(); // 输出:姓名: Bob, 年龄: 25}
}

代码解释

  • Person person1 = new Person();:使用无参数构造方法创建person1对象,属性值为默认值。

  • Person person2 = new Person("Alice", 30);:使用带参数构造方法创建person2对象,属性值为“Alice”和30。

  • displayInfo()方法用于输出每个对象的个人信息。

四、构造方法的重载

构造方法可以重载,即同一个类可以有多个构造方法,参数不同。

public class Person {private String name;private int age;private String gender;// 无参数构造方法public Person() {this.name = "未知";this.age = 0;this.gender = "未知";}// 带两个参数的构造方法public Person(String name, int age) {this.name = name;this.age = age;this.gender = "未知"; // 默认性别}// 带三个参数的构造方法public Person(String name, int age, String gender) {this.name = name;this.age = age;this.gender = gender;}public void displayInfo() {System.out.println("姓名: " + name + ", 年龄: " + age + ", 性别: " + gender);}
}

代码解释

  • 这里我们定义了三个构造方法:
    • 无参数构造方法:初始化所有属性为默认值。

    • 带两个参数的构造方法:允许设置姓名和年龄,性别为默认值。

    • 带三个参数的构造方法:允许设置所有属性。

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

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

相关文章

什么是头皮EA(剥头皮EA)?

在许多外汇交易者的眼中,剥头皮交易一直是一个神秘的存在。一部分人认为它是一种“外汇禁招”,而另一部分人则认为它比日内交易更容易盈利。那么,外汇剥头皮到底是什么?它与点差之间又有怎样的关系?本文将对剥头皮交易…

华为ensp防火墙配置(纯享版)

文章目录 前言一、拓扑结构二、配置步骤1.路由器配置(路由器代替互联网)2.server和pc配置3.防护墙配置4.测试 总结 前言 防火墙是生活和项目中不可或缺的一部分,本篇文章对华为的ensp防火墙配置做一个总结。在之前的dhcp配置中有软件的下载地…

区块链技术在数字版权管理中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 引言 区块链技术概述 …

docker 拉取MySQL8.0镜像以及安装

目录 一、docker安装MySQL镜像 搜索images 拉取MySQL镜像 二、数据挂载 在/root/mysql/conf中创建 *.cnf 文件 创建容器,将数据,日志,配置文件映射到本机 检查MySQL是否启动成功: 三、DBeaver数据库连接 问题一、Public Key Retrieval is not allowed 问题…

VUE3中Element table表头动态展示合计信息(不是表尾合计)

一、背景 原型上需要对两个字段动态合计,输出摘要信息 原先想到是的Element的 :summary-method,发现不是动态,所以换监听来实现 二、vue代码 <el-table v-model="loading" :data="itemList"><el-table-column label="药品名称" pro…

让直播流量不再是“数字游戏”!本地生活+AI数字人的共赢方式 !

如今&#xff0c;数字化浪潮席卷全球&#xff0c;直播行业竞争愈发激烈。许多人都希望能够将自己直播间所产生的热度实时变现&#xff0c;但总是没有头绪或者是把握不住机会&#xff0c;就这样让直播流量从白白流失。即便是有人使用上创新型智能AI数字人系统&#xff0c;也少有…

jmeter常用配置元件介绍总结之前置处理器、测试片段

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之前置处理器、测试片段 6.前置处理器6.1用户参数6.2取样器超时6.3.测试片段6.4JSR223 PreProcessor6.5.JDBC PreProcessor 6.前置处理器 在取样器请求之前执行的操作&#xff0c;优先级比取样器高&#xff0c;用来处理一些…

前端代码分析题(选择题、分析题)——this指向、原型链分析

this指向 普通函数&#xff1a;this 的指向由调用方式决定&#xff0c;可以是全局对象、调用该函数的对象&#xff0c;或者显式指定的对象。箭头函数&#xff1a;this 的指向在定义时确定&#xff0c;始终继承自外层函数作用域的 this&#xff0c;不会被调用方式影响。 var obj…

Linux下进程链接结构,命令行参数,环境变量

bash 是一种 shell。在 Linux 系统中&#xff0c;当我们在终端输入命令时&#xff0c;通常是在一个 shell 环境下进行的。如果这个 shell 是 bash&#xff0c;那么所有命令行执行的命令都是 bash 的子进程。 1.Linux下进程链接结构 进程链接补充知识&#xff1a; 所有进程都…

Android studio中关于printf和print和println的区别

print:为一般输出&#xff0c;同样不能保留精度格式转化&#xff0c;也不能换行输出&#xff0c;输出需要加上换行符printf:常用于格式转换&#xff0c;但需要注意不是换行输出&#xff0c;只用于精度转换&#xff0c;跟C语言的printf一样的&#xff0c;输出需要加上换行符prin…

GISBox VS ArcGIS:分别适用于大型和小型项目的两款GIS软件

在现代地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;有许多大家耳熟能详的GIS软件。它们各自具有独特的优势&#xff0c;适用于不同的行业需求和使用场景。在众多企业和开发者面前&#xff0c;如何选择合适的 GIS 软件成为了一个值得深入思考的问题。今天&#xff…

精深之道:在专业领域迅速铸就影响力

在知识爆炸的时代专业化已成为各行各业竞争的关键词。要想在专业领域内快速实现影响力&#xff0c;不仅需要深厚的专业知识积累&#xff0c;还需要独到的见解、创新的思维以及有效的传播策略。本文旨在探讨如何在专业领域内迅速建立并扩大个人或组织的影响力&#xff0c;成为行…

微服务(二)

目录 1.网关路由 1.1.认识网关 1.2.快速入门 1.2.1.引入依赖 1.2.2.启动类 1.2.3.配置路由 1.3.路由过滤 2.网关登录校验 2.1.鉴权思路分析 2.2.网关过滤器 2.3.自定义过滤器 2.3.1.自定义GatewayFilter 2.3.2.自定义GlobalFilter 2.4.登录校验 2.4.1.JWT工具 …

ESP32学习笔记_FreeRTOS(1)——Task的创建和使用

摘要(From AI): 本文是基于 FreeRTOS 和 ESP_IDF 的学习笔记&#xff0c;详细讲解了任务管理、优先级设置、任务堆栈监控、看门狗定时器&#xff08;IWDT 和 TWDT&#xff09;等关键功能。内容涵盖任务创建与删除、任务挂起与恢复、时间片轮转调度机制&#xff0c;以及任务看门…

95.【C语言】数据结构之双向链表的头插,头删,查找,中间插入,中间删除和销毁函数

目录 1.双向链表的头插 方法一 方法二 2.双向链表的头删 3.双向链表的销毁 4.双向链表的某个节点的数据查找 5.双向链表的中间插入 5.双向链表的中间删除 6.对比顺序表和链表 承接94.【C语言】数据结构之双向链表的初始化,尾插,打印和尾删文章 1.双向链表的头插 方法…

【Docker容器化技术】docker安装与配置、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库

文章目录 一、Docker的安装与配置1、docker概述2、安装docker3、docker架构4、配置镜像加速器 二、Docker命令1、服务相关命令2、镜像相关命令3、容器相关命令 三、Docker容器数据卷1、数据卷概念及作用2、配置数据卷3、配置数据卷容器 四、Docker应用部署实战1、部署MySQL2、部…

海外云手机在出海业务中的优势有哪些?

随着互联网技术的快速发展&#xff0c;海外云手机已在出海电商、海外媒体推广和游戏行业都拥有广泛的应用。对于国内的出海电商企业来说&#xff0c;短视频引流和社交平台推广是带来有效流量的重要手段。借助云手机&#xff0c;企业能够更高效地在新兴社交平台上推广产品和品牌…

abap 可配置通用报表字段级日志监控

文章目录 1.功能需求描述1.1 功能1.2 效果展示2.数据库表解释2.1 表介绍3.数据库表及字段3.1.应用日志数据库抬头表:ZLOG_TAB_H3.2.应用日志数据库明细表:ZLOG_TAB_P3.3.应用日志维护字段配置表:ZLOG_TAB_F4.日志封装类5.代码6.调用方式代码7.调用案例程序demo1.功能需求描述 …

OceanBase 应用实践:如何处理数据空洞,降低存储空间

问题描述 某保险行业客户的核心系统&#xff0c;从Oracle 迁移到OceanBase之后&#xff0c;发现数据存储空间出现膨胀问题&#xff0c;数据空间 datasize9857715.48M&#xff0c;实际存储占用空间17790702.00M。根据 required_mb - data_mb 值判断&#xff0c;数据空洞较为严重…

软件测试:测试用例详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、通用测试用例八要素   1、用例编号&#xff1b;    2、测试项目&#xff1b;   3、测试标题&#xff1b; 4、重要级别&#xff1b;    5、预置…