Java中的类与对象:构建程序世界的基石

在Java编程的世界里,类与对象是面向对象编程(OOP)的核心概念,它们就像构建大厦的砖瓦,支撑起整个程序的结构。理解类与对象,是掌握Java编程的关键一步。

类:对象的模板

类是对一类事物的抽象描述,它定义了这类事物所具有的属性和行为。比如说,我们可以定义一个“汽车”类,这个类就包含了汽车的属性,像颜色、品牌、型号等,还有汽车的行为,比如启动、加速、刹车等。

类的定义包含两个主要部分:成员变量(属性)和成员方法(行为)。成员变量用于描述对象的状态,成员方法用于描述对象的操作。例如,定义一个“Person”类:

public class Person {// 成员变量(属性)String name;int age;String gender;// 成员方法(行为)public void eat() {System.out.println(name + "在吃饭");}public void sleep() {System.out.println(name + "在睡觉");}
}

在这个“Person”类中,name、age、gender是成员变量,代表了人的姓名、年龄和性别这些属性;eat()和sleep()是成员方法,代表了人吃饭和睡觉这些行为。

对象:类的实例化

对象是类的具体实例,是根据类这个模板创建出来的具体事物。如果说类是“汽车设计图”,那么对象就是根据设计图制造出来的“具体汽车”。

在Java中,创建对象需要使用new关键字。例如,根据上面的“Person”类创建对象:

public class Main {public static void main(String[] args) {// 创建Person类的对象Person person1 = new Person();// 给对象的属性赋值person1.name = "张三";person1.age = 20;person1.gender = "男";// 调用对象的方法person1.eat();person1.sleep();Person person2 = new Person();person2.name = "李四";person2.age = 25;person2.gender = "女";person2.eat();person2.sleep();}
}

在这段代码中,person1和person2都是“Person”类的对象。我们通过“对象名.属性名”的方式给对象的属性赋值,通过“对象名.方法名()”的方式调用对象的方法。运行这段代码,会输出:

张三在吃饭
张三在睡觉
李四在吃饭
李四在睡觉

类与对象的关系

类和对象是相互依存的关系。类是对象的抽象,它规定了对象所具有的属性和行为;而对象是类的具体实现,一个类可以创建出多个不同的对象,这些对象都具有类中定义的属性和行为,但属性的值可能不同。

就像“Person”类可以创建出“张三”“李四”等多个不同的人对象,他们都有人的姓名、年龄等属性和吃饭、睡觉等行为,但具体的姓名、年龄等数值却各不相同。

补充知识:this关键字、构造函数与包

this关键字

在Java中,this关键字是一个非常重要的引用,它代表当前对象本身。主要有以下几种常见用法:

  1. 区分成员变量和局部变量:当方法中的局部变量与类的成员变量同名时,使用this可以明确表示是访问成员变量。例如:
public class Person {String name;public void setName(String name) {this.name = name; // this.name表示成员变量,name表示局部变量}
}
  1. 调用类中的其他方法:可以在一个成员方法中使用this调用本类的其他成员方法,通常可以省略this,但在某些情况下为了清晰表达会显式写出。例如:
public class Person {public void eat() {System.out.println("吃饭");}public void dinner() {this.eat(); // 调用本类的eat()方法}
}
  1. 调用类的构造函数:在构造函数中,可以使用this(参数列表)来调用本类的其他构造函数,且必须放在构造函数的第一行。

构造函数

构造函数是一种特殊的方法,它的名称与类名完全相同,且没有返回值类型(包括void也不能有)。构造函数的主要作用是在创建对象时初始化对象的属性。

  1. 默认构造函数:如果一个类中没有显式定义任何构造函数,Java编译器会自动为该类生成一个无参的默认构造函数。例如:
public class Person {// 没有显式定义构造函数,编译器会生成默认无参构造函数
}
  1. 自定义构造函数:我们可以根据需求自定义构造函数,实现对象属性的初始化。例如:
public class Person {String name;int age;// 无参构造函数public Person() {}// 有参构造函数,初始化name属性public Person(String name) {this.name = name;}// 有参构造函数,初始化name和age属性public Person(String name, int age) {this.name = name;this.age = age;}
}

当创建对象时,会根据传入的参数自动调用对应的构造函数:

Person person1 = new Person(); // 调用无参构造函数
Person person2 = new Person("张三"); // 调用单参构造函数
Person person3 = new Person("李四", 25); // 调用双参构造函数

包(Package)是Java中用于组织类和接口的一种机制,它的主要作用是避免类名冲突,同时便于对类进行分类管理。

  1. 包的声明:在Java源文件的第一行,使用package关键字声明该类所在的包,格式为package 包名;。包名通常采用小写字母,一般按照公司域名的反写来命名,例如com.example.demo

  2. 导入包中的类:当需要使用其他包中的类时,需要使用import关键字导入该类。例如,要使用java.util包中的ArrayList类,可以这样导入:

import java.util.ArrayList;

如果需要导入一个包中的所有类,可以使用*通配符,例如import java.util.*;

  1. 包的访问权限:类中的成员(成员变量和成员方法)的访问权限会受到包的影响。被default(默认,即不写访问修饰符)修饰的成员,只能被同一个包中的类访问。

总结

类与对象是Java面向对象编程的基础,类定义了对象的蓝图,对象是类的具体体现。而this关键字、构造函数和包则是在类与对象的基础上,为Java编程提供了更灵活、更规范的实现方式。通过类与对象的封装,以及这些补充知识的运用,我们可以将数据和操作数据的方法结合在一起,提高代码的复用性和可维护性。

在实际的Java编程中,我们会大量使用类与对象来构建程序,理解并熟练运用它们以及相关知识,是成为一名优秀Java程序员的必经之路。

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

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

相关文章

Hexo - 免费搭建个人博客03 - 将个人博客托管到github,个人博客公开给大家访问

导言我的博客:https://q164129345.github.io/ 既然要将个人博客托管到github,首先我们肯定要有一个github账户。另外也需要在电脑上安装另外一个著名的代码管理工具git。 一、创建github仓库二、在Hexo设置部署的内容# Deployment## Docs: https://hexo.…

一次Oracle集群脑裂问题分析处理

问题描述 填写问题的基础信息。 系统名称 数据库集群 IP地址 xxxxxx 操作系统 Linux 数据库 Oracle 11.2.0.4 症状表现 问题的症状表现如下 4月26号晚22点02分左右,HIS集群发生脑裂,十几分钟后(22.18)一节点集群率先获…

0基础法考随手笔记 02(刑诉法专题04 辩护与代理)

0基础法考随手笔记 02(刑诉法专题04 辩护与代理) 1.值班律师相关权力义务2. 3. 4.什么是强制医疗 注意:为强制医疗指派的律师,是诉讼代理人,不是辩护人,因为此人不会被追究刑事责任。 “强制医疗” 是刑事诉…

HF86611_VC1/HF86611Q_VC1:多通道USB HiFi音频解码器固件技术解析

引言随着音频技术的不断发展,多通道音频处理和多接口兼容性成为现代音频设备的重要需求。本文将介绍一款基于XMOS XU316技术的多通道USB HiFi音频解码器固件——HF86611_VC1/HF86611Q_VC1,这是一款专为多接口HiFi音频应用设计的软件解决方案。产品概述HF…

python---列表(List)

文章目录创建列表基本操作访问元素(索引)切片操作修改列表常用方法列表推导式多维列表列表是 Python 中最基本、最常用的数据结构之一,它是一个有序的可变集合,可以包含不同类型的元素。创建列表 # 空列表 empty_list [] empty_…

ESP32-S3学习笔记<3>:UART的应用

ESP32-S3学习笔记<3>:UART的应用1. 头文件包含2. UART的配置2.1 uart_num的选择2.2 uart_config的设定2.2.1 baud_rate/波特率设置2.2.2 data_bits/数据位数设置2.2.3 parity/奇偶校验位设置2.2.4 stop_bits/停止位设置2.2.5 flow_ctrl/流控位…

【Vue3】加载高德地图案例

官方API:展示地图-入门教程-地图 JS API 2.0 | 高德地图API 1、获取高德Key 参考:准备-地图 JS API 2.0 | 高德地图API 2、创建工程 npm create vitelatest 3、下载依赖集运行项目 npm install npm i amap/amap-jsapi-loader --save npm run dev 4、编写核心…

【工具】Pycharm隐藏侧边灯泡提示

问题描述 在Pycharm中,每行前面很容易出现一个小灯泡,有时候很影响操作,需要将其取消掉设置方法打开设置 按 CtrlAltS 打开设置对话框或者通过菜单 File → Settings(在 macOS 上是 PyCharm → Preferences)导航到外观…

XSS相关理解

由于本人对一小部分dom型xss、原型链污染和存储型xss理解不够透彻,因此在本篇文章中原型链污染和存储型xss偏重进行概念理解或简单的代码理解,随后会慢慢补充 文章目录1 XSS概述1.1 什么是XSS?1.2 XSS主要分三种类型2 XSS基础2.1 XSS基础练习…

Odoo:免费开源的金属制品行业ERP管理软件

引言开源智造Odoo数字化解决方案专家团队意识到,在当今全球市场中,将盈利能力和竞争力最大化的机会促使许多金属制品制造商投资于推进业务发展的新技术。金属制品会计软件是企业用来处理他们业务和增加利润的解决方案。某金属制品加工工艺流程图&#xf…

Ubuntu22.04配置GTest测试框架

前言 鸿蒙系统的代码仓库使用GTest作为单元测试的工具。特性开发时,需要写demo以验证开发思路。因此有必要搭建GTest开发环境配合鸿蒙特性开发做开发demo。 我测试环境是wsl2 Ubuntu22.04 LTS。 搭建过程 安装必备C组件 sudo apt install -y unzip g gcc cmake …

学习日志15 python

1 filter() 函数filter(function, iterable)filter函数是python中的高阶函数, 第一个参数是一个筛选函数, 第二个参数是一个可迭代对象, 返回的是一个生成器类型, 可以通过next获取值。filter() 函数是 Python 内置的高阶函数,其主要功能是对可迭代对象中的每个元素…

Linux 环境下安装 MySQL 8.0.34 二进制 详细教程 附docker+k8s启动

文章目录Linux 环境下安装 MySQL 8.0(二进制)详细教程准备工作安装依赖包下载并解压 MySQL下载 MySQL 二进制包解压 MySQL移动目录并创建 MySQL 用户配置 MySQL配置数据目录与日志目录编辑配置文件 /etc/my.cnf初始化 MySQL 数据库配置启动脚本与环境变量…

HTML ISO-8859-1: 完全解析

HTML ISO-8859-1: 完全解析 引言 ISO-8859-1,又称为 Latin-1,是一种广泛使用的字符编码标准,特别是在HTML文档中。本文将详细介绍ISO-8859-1编码的特点、应用场景以及如何在使用HTML时正确地使用ISO-8859-1编码。 ISO-8859-1编码概述 定义 ISO-8859-1编码是一种单字节编…

c++学习第3篇编辑器——centos7.9.2009系统离线安装clion软件并成功调试c++程序

远程linux服务器安装clion0 前提2个:1 下载CLion-2021.1.1.tar.gz安装包2 上传到linux系统并解压3 修改linux系统里的/etc/ssh/sshd_config文件中的X11UseLocalhost 注释去掉并设为no4 安装xauth5 安装MobaXterm软件并使用ssh组件打开clion5.1 如果打不开clion,报错…

20250722解决在Ubuntu 24.04.2下编译RD-RK3588开发板的Android13出现找不到lz4的问题

20250722解决在Ubuntu 24.04.2下编译RD-RK3588开发板的Android13出现找不到lz4的问题 2025/7/22 15:21缘起:在Ubuntu 24.04.2下编译RD-RK3588开发板的Android13。 报错:/bin/sh: 1: lz4: not found为了简单起见,直接在 荣品的技术支持QQ群的 …

加载用户设置时遇到错误找到一个带有无效“icon“的配置文件。将该配置文件默认为无图标。确保设置“icon“时,该值是图像的有效文件路径“

"C:\Users\Yourname\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json 修改所有icon字段位none 如:{"guid": "{bf61c995-08cc-4a56-b781-5dba411ef19c}","hidden": false,"icon&…

如何提升连带消费?从新零售“人-货-场”模型拆解

目录 一、分析背景 二、新零售分析思路和分析方法 1.具体分析思路 2.分析方法 三、新零售“人-货-场”分析的实操步骤 1.数据收集 2.数据处理 3.图表制作 四、总结 想让线上引来的顾客,在店里多买几件? 连带消费可是实体店赚钱的“秘密武器”&a…

Java异常处理核心原理与最佳实践

Java异常处理核心原理与最佳实践 场景: 你开发的文件处理工具在读取用户上传的文件时突然崩溃,控制台抛出FileNotFoundException。用户的操作被中断,数据丢失。这种糟糕的体验正是异常处理机制要解决的核心问题——如何在程序出错时优雅地恢复…

Ubuntu 安装 Odoo 17 详细教程

Ubuntu 安装 Odoo 17 详细教程 本教程将指导您在 Ubuntu 系统上从源代码安装 Odoo 17。Odoo 是一款功能强大的开源 ERP 和 CRM 软件套件。本教程适用于希望自行配置和管理 Odoo 环境的用户,尤其适合开发者和系统管理员。 教程概述 本教程将涵盖以下步骤&#xff…