【JAVA】Java基础—面向对象编程:类与对象-类的结构(属性、方法、构造方法)

  1. 属性用于描述对象的状态,通常以变量的形式存在。

  2. 方法定义了对象的行为,可以执行特定的操作或计算。

  3. 构造方法用于初始化对象,可以根据需要重载以支持不同的初始化方式。

1. 属性(字段)

属性是类的状态或特征,通常用变量表示。属性可以是基本数据类型(如intString等)或对象类型。

示例 1:定义一个简单的类

// 定义一个简单的类 Person
public class Person {// 属性(字段)String name; // 姓名int age; // 年龄String gender; // 性别// 方法:显示个人信息public void displayInfo() {System.out.println("Name: " + name);System.out.println("Age: " + age);System.out.println("Gender: " + gender);}
}// 主类,用于测试 Person 类
public class Main {public static void main(String[] args) {// 创建 Person 类的对象Person person = new Person();// 设置属性值person.name = "Alice";person.age = 30;person.gender = "Female";// 调用方法显示个人信息person.displayInfo();}
}

代码解释

  1. 类的声明public class Person定义了一个名为Person的类。

  2. 属性String nameint ageString genderPerson类的属性,分别表示姓名、年龄和性别。

  3. 方法public void displayInfo()是一个方法,用于输出个人信息。

  4. 对象创建:在Main类的main方法中,使用new Person()创建了一个Person对象,并设置其属性值,最后调用displayInfo方法显示信息。

2. 方法

方法是定义类的行为或功能。方法可以接收参数并返回值,也可以不接收参数或不返回值。

示例 2:添加方法

public class Calculator {// 方法:加法public int add(int a, int b) {return a + b; // 返回两个数的和}// 方法:减法public int subtract(int a, int b) {return a - b; // 返回两个数的差}// 方法:乘法public int multiply(int a, int b) {return a * b; // 返回两个数的积}// 方法:除法public double divide(int a, int b) {if (b != 0) {return (double) a / b; // 返回两个数的商} else {System.out.println("Cannot divide by zero.");return 0; // 返回0,表示无法除以零}}
}// 主类,用于测试 Calculator 类
public class Main {public static void main(String[] args) {Calculator calc = new Calculator();// 调用方法进行计算System.out.println("Addition: " + calc.add(5, 10)); // 输出:15System.out.println("Subtraction: " + calc.subtract(10, 5)); // 输出:5System.out.println("Multiplication: " + calc.multiply(4, 5)); // 输出:20System.out.println("Division: " + calc.divide(10, 2)); // 输出:5.0calc.divide(10, 0); // 测试除以零}
}

代码解释

  1. 方法定义public int add(int a, int b)定义了一个加法方法,接收两个整数参数并返回它们的和。

  2. 其他方法subtractmultiplydivide方法分别实现了减法、乘法和除法的功能。

  3. 除法方法的特殊处理:在divide方法中,添加了对除以零的检查,避免了运行时错误。

  4. 对象创建和方法调用:在Main类中,创建Calculator对象并调用各种计算方法,输出结果。

3. 构造方法

构造方法是用于初始化对象的特殊方法。构造方法的名称与类名相同,并且没有返回值。构造方法可以重载,以便根据不同的参数初始化对象。

示例 3:构造方法的使用

public class Book {// 属性(字段)String title; // 书名String author; // 作者double price; // 价格// 构造方法:无参数public Book() {title = "Unknown Title"; // 默认书名author = "Unknown Author"; // 默认作者price = 0.0; // 默认价格}// 构造方法:带参数public Book(String title, String author, double price) {this.title = title; // 使用参数初始化属性this.author = author;this.price = price;}// 方法:显示书籍信息public void displayInfo() {System.out.println("Title: " + title);System.out.println("Author: " + author);System.out.println("Price: $" + price);}
}// 主类,用于测试 Book 类
public class Main {public static void main(String[] args) {// 使用无参数构造方法创建对象Book book1 = new Book();book1.displayInfo(); // 输出默认信息// 使用带参数构造方法创建对象Book book2 = new Book("Effective Java", "Joshua Bloch", 45.0);book2.displayInfo(); // 输出书籍信息}
}

代码解释

  1. 构造方法public Book()是无参数构造方法,用于初始化书籍的默认信息。public Book(String title, String author, double price)是带参数构造方法,用于根据提供的参数初始化书籍的信息。

  2. 属性初始化:在构造方法中使用this关键字来区分类的属性和构造方法的参数。

  3. 对象创建:在Main类中,分别使用无参数和带参数的构造方法创建Book对象,并调用displayInfo方法显示书籍信息。

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

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

相关文章

如何学习C++游戏开发

学习C游戏开发是一个涉及多个领域的复杂过程,包括编程、游戏设计、图形学等。 1. **学习C基础**: - 掌握C的基本语法和面向对象编程。 - 学习C标准库,特别是STL(标准模板库)。 2. **理解游戏开发概念**&#xf…

RabbitMQ 篇-深入了解 RabbitMQ 安装以及 SpringAMQP 的基础使用(声明队列和交换机、发送接收消息、配置 JSON 消息转化器)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 RabbitMQ 初识 1.1 RabbitMQ 安装 2.0 数据隔离 2.1 用户管理 2.2 virtual host 虚拟主机 3.0 SpringAMQP 3.1 RabbitMQ 配置 3.2 发送消息 3.3 接收消息 3.4 Wor…

基础归一化方法 数学理论及其matlab代码

归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为标量。在多种计算中都经常用到这种方法。以下是常见的基础归一化方法:Min-Max 归一化,Z-Score 归一化、小数定标归一化、…

计算机视觉算法

计算机视觉算法是人工智能领域中的重要技术之一,它使计算机能够“看”并理解图像或视频内容。以下是对计算机视觉算法的详细介绍: 一、定义与目标 计算机视觉算法是一组计算模型和数学方法的组合,旨在让计算机能够自动解析图像和视频中的信息…

【Elasticsearch】Elasticsearch集成Spring Boot

Elasticsearch集成Spring Boot 概述 Spring Data Elasticsearch 介绍一、环境初始化二、实战入门1、定义数据实体类2、定义Dao层3、框架集成-SpringData-集成测试-索引操作4、框架集成-SpringData-集成测试-文档操作5、框架集成-SpringData-集成测试-文档搜索 概述 Spring Data…

Kubernetes 调度器调度策略的资源分配不均问题如何解决?

Kubernetes 调度器调度策略的资源分配不均问题如何解决? 在 Kubernetes 中,调度器调度策略可能会导致资源分配不均的问题,可以通过以下几种方法来解决: 一、资源配额和限制 设置命名空间资源配额: 可以为不同的命名空间设置资源配额,限制该命名空间可以使用的 CPU、内存…

漫漫数学之旅038

文章目录 经典格言数学习题古今评注名人小传 - 古斯塔夫福楼拜 经典格言 诗歌是一门像几何一样严格的科学。——古斯塔夫福楼拜(Gustave Flaubert) 古斯塔夫福楼拜将诗歌比作几何学,强调了诗歌创作的严谨性。他认为诗歌不仅仅是情感的流露&a…

前端md5加密

npm下载 npm install --save ts-md5页面引入 import { Md5 } from ts-md5使用 const md5PwdMd5.hashStr("123456")md5Pwd(加密后的数据) .toUpperCase()方法转大写

植物神经紊乱不用怕,这些维生素来帮你!

在现代快节奏的生活中,植物神经紊乱已成为一种常见的健康问题。你是否经常感到焦虑、失眠、疲劳,甚至消化不良?这些可能都是植物神经紊乱的表现。幸运的是,通过适当补充维生素,我们可以有效缓解症状,恢复身…

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本,公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议,现打算迁移到IS-IS路由协议,张同学正在该公司实习,为了提高实际工作的准确性和…

二分查找习题篇(下)

二分查找习题篇(下) 1.山脉数组的峰顶索引 题目描述: 给定一个长度为 n 的整数 山脉 数组 arr ,其中的值递增到一个 峰值元素 然后递减。 返回峰值元素的下标。 你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。 示例 1: 输入&#xf…

playground.tensorflow神经网络可视化工具

playground.tensorflow 是一个可视化工具,用于帮助用户理解深度学习和神经网络的基本原理。它通过交互式界面使用户能够构建、训练和可视化简单的神经网络模型。以下是一些主要的数学模型和公式原理,它们在这个平台中被应用: 1. 线性模型 线…

一篇文章让你明白Go语言之数组的定义与用法

Golang数组 1. 数组的声明示例 2. 数组的初始化初始化示例 3. 访问和修改数组元素访问和修改元素的示例 4. 数组的遍历遍历数组的示例 5. 多维数组二维数组的示例 6. 数组是值类型示例:数组的值传递 7. 数组与切片的区别总结 在 Go 语言中,数组是一种固定…

LSM-TREE和SSTable

一、什么是LSM-TREE LSM Tree 是一种高效的写优化数据结构,专门用于处理大量写入操作 在一些写多读少的场景,为了加快写磁盘的速度,提出使用日志文件追加顺序写,加快写的速度,减少随机读写。但是日志文件只能遍历查询…

SDL线程

文章目录 SDL线程相关 SDL线程相关 SDL线程创建:SDL_CreateThreadSDL线程等待: SDL_WaitThreadSDL互斥锁 :SDL_CreateMutex/SDL_DestoryMutexSDL锁定互斥: SDL_LockMutex/SDL_UnlockMutexSDL条件变量:SDL_CreateCond/SDL_DestoryCondSDL条件变量 等待通知: SDL_Con…

Vite与Vue Cli的区别与详解

它们的功能非常相似,都是提供基本项目脚手架和开发服务器的构建工具。 主要区别 Vite在开发环境下基于浏览器原生ES6 Modules提供功能支持,在生产环境下基于Rollup打包; Vue Cli不区分环境,都是基于Webpack。 在生产环境下&…

STM32实现串口接收不定长数据

原理 STM32实现串口接收不定长数据,主要靠的就是串口空闲(idle)中断,此中断的触发条件与接收的字节数无关,只有当Rx引脚无后续数据进入时(串口空闲时),认为这时候代表一个数据包接收完成了&…

jQuery UI 使用

jQuery UI 使用 jQuery UI 是一个建立在 jQuery JavaScript 库之上的用户界面交互、特效、小部件和主题的库。它提供了一系列的交互组件,如拖动、排序、选择等,以及小部件,如自动完成、日期选择器、滑块等。此外,jQuery UI 还提供了一套主题,使得开发者可以轻松地定制应用…

QToolbar工具栏下拉菜单不弹出有小箭头

这里说了怎么弹出:Qt 工具栏QToolBar添加带有弹出菜单的QAction_qt如何将action添加到工具栏-CSDN博客 然后如果你是在UI里面建立的action,并拖到了toolbar,并在代码中设置菜单,例如: ui->mytoolbar->setMenu(…

大数据专业为什么要学习Hadoop课程

在当今信息爆炸的时代,大数据成为了影响各行各业的重要因素,而Hadoop作为大数据处理的核心技术之一,自然成为大数据专业学生需要掌握的一项重要技能。本文将详细探讨大数据专业为何要学习Hadoop课程,帮助读者理解其必要性和实际应…