Java:构造函数与对象

第一章:构造函数揭秘 —— 创造者的第一次触碰

构造函数,顾名思义,是用于创建和初始化对象的特殊方法。它没有返回类型,名字与类名一致。构造函数是对象诞生的第一步,也是最至关重要的一步。让我们通过一个生动的例子来理解构造函数的魔力:

public class Car {private String make;private String model;private int year;// 构造函数public Car(String make, String model, int year) {this.make = make;this.model = model;this.year = year;}// Getter 和 Setter 方法省略...
}

在上述示例中,Car 类定义了汽车的基本属性:制造商(make)、型号(model)和生产年份(year)。构造函数接收这三个参数,并将它们赋值给类的相应属性。这就是创造者的第一次触碰,赋予了对象生命和特性。


第二章:构造函数重载 —— 多元化的生命起源

构造函数重载提供了创建对象的多种途径,就像自然界中生命的多样性。在同一个类中,你可以定义多个构造函数,每个构造函数具有不同的参数列表。下面,我们将扩展 Car 类,加入更多的构造选项:

public class Car {private String make;private String model;private int year;private double price;// 无参构造函数public Car() {this("Unknown", "Unknown", 1970, 0.0); // 使用默认值}// 构造函数重载public Car(String make, String model) {this(make, model, 1970, 0.0); // 使用默认的年份和价格}public Car(String make, String model, int year) {this(make, model, year, 0.0); // 使用默认的价格}public Car(String make, String model, int year, double price) {this.make = make;this.model = model;this.year = year;this.price = price;}// Getter 和 Setter 方法省略...
}

现在,我们可以通过四种不同的构造函数来创建 Car 对象,每一种都代表了不同的生命起源。这种灵活性使得我们能够根据具体需求,轻松地初始化对象的不同状态。


第三章:构造函数链 —— 继承的血脉传承

在Java中,子类不仅可以继承父类的属性和方法,还可以调用父类的构造函数。这称为构造函数链,它确保了子类对象的正确初始化。让我们通过一个继承的例子来说明这一点:

public class Vehicle {protected String make;protected String model;// 构造函数public Vehicle(String make, String model) {this.make = make;this.model = model;}
}public class Car extends Vehicle {private int year;private double price;// 构造函数public Car(String make, String model, int year, double price) {super(make, model); // 调用父类构造函数this.year = year;this.price = price;}// Getter 和 Setter 方法省略...
}

在上面的代码中,Vehicle 类是所有交通工具的基础,而 Car 类继承了 Vehicle 类的属性和构造函数。Car 的构造函数首先调用了 super 关键字,这意味着它调用了父类 Vehicle 的构造函数,从而确保了所有继承自父类的属性都被正确初始化。


第四章:构造函数与封装 —— 秘密花园的守门人

构造函数不仅是对象的生命之源,也是封装原则的守护者。通过构造函数,我们可以控制对象的初始化过程,限制外部直接访问和修改对象的内部状态。这就像花园的守门人,只有经过精心挑选的访客才能进入秘密花园。

在我们的 Car 类中,构造函数是唯一可以直接设置 makemodelyearprice 属性的地方。通过将这些属性声明为私有(private),我们确保了外部代码不能直接修改这些属性,只能通过构造函数和公共的 getter/setter 方法间接访问。

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

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

相关文章

STM32HAL库+ESP8266+cJSON+微信小程序_连接华为云物联网平台

STM32HAL库ESP8266cJSON微信小程序_连接华为云物联网平台 实验使用资源:正点原子F407 USART1:PA9P、A10(串口打印调试) USART3:PB10、PB11(WiFi模块) DHT11:PG9(采集数据…

JavaScript 判断客户端是手机还是pad

引言 在日常开发中,经常需要根据设备的类型来做不同的适配或逻辑处理。特别是在移动端开发中,判断用户使用的设备类型是手机还是平板电脑是非常常见的需求。本文将介绍使用 JavaScript 判断设备类型的方法,并提供相应的代码示例。 设备类型…

【Soc级系统防御】PCB安全威胁与防御策略:攻击模型与实践指南

本文档深入探讨了印刷电路板(PCB)面临的安全挑战,包括硬件木马、现场修改、盗版和反向工程等攻击方式,并提供了相应的攻击模型、案例研究、实验操作及练习题,旨在提升对PCB安全威胁的认识和防范能力。 目录 您提供的文档内容中包含了第11章的目录信息,以下是该目录部分的…

阿里云通义千

**阿里云通义千问是阿里云自主研发的一款超大规模语言模型**,专门用于深入理解和分析用户输入的自然语言,以便在不同领域和任务中为用户提供智能服务与协助。以下是对阿里云通义千问模型的相关介绍: 1. **模型能力** - **单轮对话能力**&…

sshd -t命令详解

sshd -t命令用于检查sshd_config配置文件的语法错误。它可以帮助你在重启SSH服务器之前验证配置文件的正确性,以避免出现配置错误导致SSH连接问题的情况。 具体来说,sshd -t命令会执行以下操作: 1. 打开并读取sshd_config配置文件。2. 检查…

阿里云操作系统智能助手OS Copilot的实验测评报告

什么是OS Copilot 在老师的介绍下我了解到了阿里云OS Copilot这个产品,它是阿里云推出的一项基于人工智能技术的操作系统,设计用于阿里云Linux操作系统以及其他可能的云上操作系统环境,为用户提供智能化的系统管理和运维支持。 阿里云提供了…

Python数据分析-Excel和 Text 文件的读写操作

1.Excel和 Text 文件的读写操作 1. Text 文件读写包 import sys print(sys.argv[0]) print(__file__) print(sys.path[0]) qopen(sys.path[0] "\out.txt","w",encodingutf-8) q.write(这个是测试一下) q.close() print(done)open 语句可以打开的创建text…

【吊打面试官系列-ZooKeeper面试题】简述 Zookeeper 文件系统?

大家好,我是锋哥。今天分享关于 【简述 Zookeeper 文件系统?】面试题,希望对大家有帮助; 简述 Zookeeper 文件系统? Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节…

白平衡说明

白平衡 相机白平衡的起源原理以及作用起源作用 白平衡的原理白平衡的类型应用说明 工业相机的白平衡效果对比一键白平衡的必要性一键白平衡的实现方式 相机白平衡的起源原理以及作用 起源 白平衡(White Balance, WB)概念的起源与色温理论密切相关。色温…

【eNSP模拟实验】单臂路由实现VLAN间通信

实验需求 如下图所示,辅导员办公室需要访问处在不同vlan的学生管理服务器的文件,那么如何实现两台终端相互通信呢?我们可以使用单臂路由的方式来实现。 单臂路由(router-on-a-stick)是指在路由器的一个接口上通过配置…

学习大数据DAY15 PLSQL基础语法4

目录 动态SQL execute immediate语句 带参数使用 作业 动态游标 动态游标类型声明 动态游标使用 强类型游标 作业2 遗忘点复习 动态SQL plsql里面只能执行 select insert update delete ,想执行create怎么办?其他复杂功能? 使用…

Spring Boot中@Async注解的使用及原理 + 常见问题及解决方案

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

Xcode Playgrounds:探索Swift编程的交互式乐园

Xcode Playgrounds:探索Swift编程的交互式乐园 Xcode是苹果公司为macOS开发的集成开发环境(IDE),它提供了一套完整的工具集,用于开发macOS、iOS、watchOS和tvOS应用。在Xcode中,Playgrounds是一个革命性的…

简述linux通知链机制

notifier chain概述 Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,有时需要使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制&#xff08…

IPython:提升Python编程效率的实用技巧与案例

引言 IPython,作为Python的一个交互式计算环境,极大地提升了编程、数据分析和科学计算的效率。它不仅提供了增强的交互式Shell,还集成了丰富的工具和功能,如魔术命令、自动补全、内嵌图形显示等。本文将整理一系列IPython的使用技…

VMWare 下给Centos扩容

目录 参考文档背景介绍扩容查看当前文件磁盘信息增加一个存储分区创建物理卷把物理卷添加到卷组查看卷组名把物理卷并入卷组 对文件系统进行扩容搞定 参考文档 1、百度经验 2、CSDN 3、掘金 背景介绍 测试环境用VMWare 安装centos7,几年下来磁盘空间不够用了&…

【前端项目笔记】10 项目优化上线

项目优化上线 目标:优化Vue项目部署Vue项目(上线提供使用) 项目优化 项目优化策略: 生成打包报告:根据生成的报告发现问题并解决第三方库启用CDN:提高首屏页面的加载效率Element-UI组件按需加载路由懒加…

数据结构4.0——串的定义和基本操作

串的定义(逻辑结构) 串,即字符串(String)是由零个或多个字符组成的有序数列。 一般记为Sa1a2....an(n>0) 其中,S是串名,单引号括起来的字符序列是串的值;ai可以是字母、数字或其他字符;串中字符的个数n称为串的长度。n0时的…

unity 2020版本packManager没有AssetBundles

1.Packages->manifest.json打开manifest.json文件 2.添加"com.unity.assetbundlebrowser": "1.7.0", 保存即可

以数据编织,重构数据管理新范式

大数据产业创新服务媒体 ——聚焦数据 改变商业 人工智能几乎统一了全球最顶尖科技公司的认知:这个时代,除了AI,没有第二条路可走。 人工智能的技术逻辑颇有一种“暴力美学”,它依托于海量大数据和超高算力的训练和推理&#xff…