5.Java 面向对象编程入门:类与对象的创建和使用​

        在现实生活中,我们常常会接触到各种各样的对象,比如一辆汽车、一个学生、一部手机等。这些对象都具有各自的属性和行为。例如,汽车有颜色、品牌、型号等属性,还有启动、加速、刹车等行为;学生有姓名、年龄、学号等属性,还有学习、考试、参加活动等行为。而在 Java 编程中,面向对象编程(Object - Oriented Programming, OOP)就是将现实世界中的对象抽象成计算机中的类和对象,通过类来描述对象的共同属性和行为,通过对象来具体实现这些属性和行为。本文将以生活实例引入面向对象编程概念,详细讲解 Java 中类的定义、属性和方法,以及对象的创建与使用,并通过简单的学生信息管理案例,让读者理解类和对象的关系。​

一、面向对象编程概念引入​

1.  生活中的对象与类​

        我们先从生活中的例子来理解类和对象的概念。假如我们要描述一群学生,每个学生都有姓名、年龄、性别等属性,都有学习、说话、走路等行为。那么,我们可以把 “学生” 这个整体看作一个类(Class),它定义了所有学生共同的属性和行为;而每一个具体的学生,比如张三、李四,就是这个类的一个对象(Object),是类的具体实例。类是抽象的,它描述了一组对象的共同特征和行为;对象是具体的,是类的一个实例,具有类所定义的属性和行为。​

        再比如,我们日常生活中使用的手机,不同品牌、型号的手机都属于 “手机” 这个类,它们都有屏幕、电池、摄像头等属性,都有打电话、发短信、上网等行为。而每一部具体的手机,如华为 P60、苹果 iPhone 15,就是 “手机” 类的对象。​

2. 面向对象编程的优势​

        面向对象编程具有封装、继承、多态三大特性,这些特性使得程序更加模块化、可维护、可扩展。封装是将数据和操作数据的方法封装在一起,形成一个独立的单元,对外隐藏内部的实现细节,只提供必要的接口;继承是子类继承父类的属性和方法,从而实现代码的复用;多态是指同一个方法在不同的子类中可以有不同的实现方式,从而提高程序的灵活性和扩展性。​

二、Java 中类的定义​

1. 类的基本结构​

        在 Java 中,类的定义使用 class 关键字,其基本结构如下:

public class ClassName {​// 属性(成员变量)​// 方法(成员方法)​
}

        其中,public 是访问修饰符,表示该类可以被其他类访问;ClassName 是类名,通常使用驼峰命名法,首字母大写。​

2. 属性(成员变量)​

        属性是类的状态描述,用于表示对象的特征。在类中定义属性时,需要指定属性的类型和名称。例如,定义一个学生类 Student,其中包含姓名、年龄、学号等属性:

public class Student {// 姓名private String name;// 年龄private int age;// 学号private String studentId;
}

        这里使用 private 访问修饰符,表示这些属性只能在本类中被访问,对外隐藏了内部的实现细节,体现了封装性。​

3. 方法(成员方法)​

        方法是类的行为描述,用于表示对象可以执行的操作。方法包括方法名、返回值类型、参数列表和方法体。例如,在 Student 类中定义获取学生信息的方法 getStudentInfo 和设置学生姓名的方法 setName:

public class Student {private String name;private int age;private String studentId;// 获取学生信息的方法public String getStudentInfo() {return "姓名:" + name + ",年龄:" + age + ",学号:" + studentId;}// 设置学生姓名的方法public void setName(String name) {this.name = name;}
}

        public 表示该方法可以被其他类访问;String 是 getStudentInfo 方法的返回值类型,表示该方法返回一个字符串;void 表示 setName 方法没有返回值;String name 是 setName 方法的参数列表,表示该方法需要接收一个字符串类型的参数 name;this.name 中的 this 关键字表示当前对象,用于区分方法参数和类的属性。​

三、对象的创建与使用​

1. 对象的创建​

        创建对象需要使用 new 关键字,后跟类名和构造方法。构造方法是一种特殊的方法,用于初始化对象的属性。如果我们没有显式地定义构造方法,Java 会自动生成一个无参构造方法。例如,创建一个 Student 类的对象:

Student student = new Student();

        这里 student 是对象变量,用于引用创建的对象;new Student() 表示创建一个 Student 类的对象,并调用无参构造方法对对象进行初始化。​

2. 对象的使用​

        创建对象后,就可以通过对象名和点运算符来访问对象的方法和属性(需要注意属性的访问修饰符,如果属性是 private,则不能直接访问,需要通过公共的方法来访问和修改)。例如,使用上面创建的 student 对象:

// 设置学生姓名
student.setName("张三");
// 设置学生年龄
student.setAge(20); // 假设我们添加了设置年龄的方法
// 设置学生学号
student.setStudentId("20230001"); // 假设我们添加了设置学号的方法
// 获取学生信息并输出
System.out.println(student.getStudentInfo());

        这里假设我们在 Student 类中添加了 setAge 和 setStudentId 方法,用于设置年龄和学号属性。​

四、学生信息管理案例​

1. 案例需求​

实现一个简单的学生信息管理系统,能够创建学生对象,设置学生的姓名、年龄、学号等信息,获取学生信息,并展示学生信息。​

2. 案例实现​

2.1 定义 Student 类

public class Student {private String name;private int age;private String studentId;// 无参构造方法public Student() {}// 有参构造方法,用于初始化属性public Student(String name, int age, String studentId) {this.name = name;this.age = age;this.studentId = studentId;}// 获取姓名public String getName() {return name;}// 设置姓名public void setName(String name) {this.name = name;}// 获取年龄public int getAge() {return age;}// 设置年龄public void setAge(int age) {this.age = age;}// 获取学号public String getStudentId() {return studentId;}// 设置学号public void setStudentId(String studentId) {this.studentId = studentId;}// 获取学生信息public String getInfo() {return "学生信息:姓名=" + name + ", 年龄=" + age + ", 学号=" + studentId;}
}

        在这个 Student 类中,我们定义了无参构造方法和有参构造方法,方便创建对象时初始化属性;同时定义了各个属性的 getter 和 setter 方法,用于访问和修改属性;还定义了 getInfo 方法,用于获取学生的详细信息。​

2.2 创建学生对象并管理信息

public class StudentManager {public static void main(String[] args) {// 创建学生对象,使用无参构造方法Student student1 = new Student();// 设置学生信息student1.setName("李四");student1.setAge(21);student1.setStudentId("20230002");// 获取并输出学生信息System.out.println(student1.getInfo());// 创建学生对象,使用有参构造方法初始化信息Student student2 = new Student("王五", 22, "20230003");// 获取并输出学生信息System.out.println(student2.getInfo());}
}

        在 StudentManager 类的 main 方法中,我们创建了两个学生对象 student1 和 student2,分别使用无参构造方法和有参构造方法,并对学生信息进行设置和获取,最后输出学生信息。​

3. 案例分析​

        通过这个案例,我们可以清楚地看到类和对象的关系。Student 类是一个模板,定义了学生的共同属性和行为;而 student1 和 student2 是 Student 类的具体对象,它们具有 Student 类所定义的属性和行为,但各自的属性值可以不同。每个对象都是独立的,对一个对象的属性修改不会影响到另一个对象。​

五、总结​

        本文通过生活实例引入了面向对象编程的概念,详细讲解了 Java 中类的定义(包括属性和方法)、对象的创建与使用,并通过学生信息管理案例让读者理解了类和对象的关系。面向对象编程是 Java 编程的核心思想之一,掌握类和对象的概念是学习 Java 面向对象编程的基础。

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

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

相关文章

从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB

作者: Lucien-卢西恩 原文来源: https://tidb.net/blog/e7034d1b Java 应用开发技术发展历程 在业务开发早期,用 Java 借助 JDBC 进行数据库操作,虽能实现基本交互,但需手动管理连接、编写大量 SQL 及处理结果集&a…

工业智能网关建立烤漆设备故障预警及远程诊断系统

一、项目背景 烤漆房是汽车、机械、家具等工业领域广泛应用的设备,主要用于产品的表面涂装。传统的烤漆房控制柜采用本地控制方式,操作人员需在现场进行参数设置和设备控制,且存在设备智能化程度低、数据孤岛、设备维护成本高以及依靠传统人…

故障率预测:基于LSTM的GPU集群硬件健康监测系统(附Prometheus监控模板)

一、GPU集群健康监测的挑战与价值 在大规模深度学习训练场景下,GPU集群的硬件故障率显著高于传统计算设备。根据2023年MLCommons统计,配备8卡A100的服务器平均故障间隔时间(MTBF)仅为1426小时,其中显存故障占比达38%&…

Vue 样式不一致问题全面分析与解决方案

文章目录 1. 问题概述1.1 问题表现1.2 问题影响 2. 根本原因分析2.1 Vue 的渲染机制与样式加载时机2.2 Scoped CSS 的工作原理2.3 CSS 模块化与作用域隔离2.4 样式加载顺序问题2.5 热重载(HMR)与样式更新 3. 解决方案3.1 确保样式加载顺序3.1.1 预加载关键 CSS3.1.2 控制全局样…

[免费]微信小程序宠物医院管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的微信小程序宠物医院管理系统(uni-appSpringBoot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序宠物医院管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibi…

测试总结(一)

一、测试流程 参与需求评审-制定测试计划-编写测试用例-用例评审-冒烟测试-测试执行-缺陷管理-预发验收测试-发布线上-线上回归-线上观察-项目总结 二、测试用例设计方法 等价类划分(处理有效/无效输入) 边界值分析(临界值测试&#xff09…

SAP-ABAP:ABAP异常处理与SAP现代技术融合—— 面向云原生、微服务与低代码场景的创新实践

专题三:ABAP异常处理与SAP现代技术融合 —— 面向云原生、微服务与低代码场景的创新实践 一、SAP技术演进与异常处理的挑战 随着SAP技术栈向云端、微服务化和低代码方向演进,异常处理面临新场景: Fiori UX敏感度:用户期望前端友…

DC-DC电路的自举电容电路原理

在以往的电子产品设计中,我们经常会选型 DCDC 芯片,在选型过程中经常遇到有些DC-DC电路中需要用到自举电容,本文主要分析自举电容在DC-DC电路中的原理。 无论同步或者异步整流,经常会看到一个自举电容,常并联在DC-DC的…

android studio 开启无线调试

1、在工具的模拟器点击下后,会出现下面菜单: 选择Pair Devices Using Wi-Fi 发现一直在转圈,并不会连接上,之前在android12的时候,发现一连就上了,现在换成了android14,连不上了。 2、选择用命令…

Go基础语法与控制结构

Go基础语法与控制结构 1. 环境配置与Hello World(扩展) 安装指南 # 验证安装成功 $ go version # 设置模块代理(中国用户推荐) $ go env -w GOPROXYhttps://goproxy.cn,direct程序解剖 package main // 程序入口包声明import…

QGIS新手教程:两种方法创建点图层(手动添加 + 表格导入),支持经纬度定位与查找

🌍QGIS新手教程:两种方法创建点图层(手动添加 表格导入),支持经纬度定位与查找 本文将手把手教你在 QGIS 中通过两种方法创建点图层,并结合经纬度定位、拾取坐标、查找属性等功能,快速掌握从地…

Doris ClickHouse Greenplum 对比

1. 核心架构对比 Doris (https://doris.apache.org/) MPP架构 列式存储支持实时更新(Unique Key模型)向量化执行引擎兼容MySQL协议 ClickHouse (https://clickhouse.com/) 分布式列式存储MergeTree存储引…

基于python,html,echart,php,mysql,在线实时监控入侵检测系统

详细视频:【基于python,html,echart,php,mysql,在线实时监控入侵检测系统,需要的可联系介绍都在所有图片中。包远程部署安装。-哔哩哔哩】 https://b23.tv/KHxmE8k

基于51单片机智能垃圾桶—红外感应自动开关

基于51单片机智能垃圾桶 (仿真+程序+原理图+PCB+设计报告) 功能介绍 具体功能: 1.ULN2003驱动步进电机控制打开关闭垃圾桶; 2.一个红外对管检测有没有人,一个红外对管…

自动涂胶机设计及其在工业生产中的应用研究

摘要 本文详细探讨了自动涂胶机的设计原理、关键技术和应用前景。随着工业自动化水平的不断提高,自动涂胶机在制造业中的应用日益广泛。文章首先分析了自动涂胶机的基本工作原理,然后深入研究了其机械结构设计、控制系统设计和视觉定位系统等关键技术。…

SQL 语言

SQL概述与数据库定义 SQL的基本组成 1、数据定义语言。SQL DDL提供定义关系模式和视图、删除关系和视图、修改关系模式的命令。 2、交互式数据操纵语言。SQL DML提供查询、插入、删除和修改的命令。 3、事务控制。SQL提供定义事务开始和结束的命令。 4、嵌入式SQL和动态SQL。用…

深度剖析ZooKeeper

1. ZooKeeper架构总览 ZooKeeper 是一个分布式协调服务,广泛用于分布式系统中的配置管理、命名服务、分布式锁和领导选举等场景。以下是对 ZooKeeper 架构、通信机制、容错处理、数据一致性与可靠性等方面的详细剖析。 一、ZooKeeper 主从集群 ZooKeeper 采用 主从…

K8S-statefulset-mysql-ha

需求 实现一个HA mysql,包括1个master,2个slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S环境需要解决的问题 1、由于使用同一个statefulset配置,因此需要考虑master和slave使用不同的cnf文件。 2、不同pod之间文件的传输 3、…

人脸美颜磨皮祛痘1:数据集说明(含下载链接)

一. 前言 本篇博客是《人脸美颜磨皮祛痘》系列文章之《数据集说明(含下载链接)》,像这种深度学习图像修复的数据一般是需要成对,网上很难找到,公司或者个人都是花钱找人做。为了方便你我他,本博客将分享一个由我自己整理的人脸美…

redis功能清单

文章目录 Redis高级功能使用说明功能清单1. 分布式锁1.1 功能描述1.2 使用方法1.3 测试接口 2. 消息发布订阅2.1 功能描述2.2 使用方法发布消息订阅消息 2.3 测试接口 3. 接口限流3.1 功能描述3.2 使用方法方式一:直接使用工具类方式二:使用注解&#xf…