当前位置: 首页 > news >正文

Java [ 基础 ] Java面向对象编程 (OOP) ✨

目录

✨探索Java基础  Java面向对象编程 (OOP) ✨

引言

1. 类和对象

2. 封装

3. 继承

4. 多态

5. 抽象

结论


✨探索Java基础  Java面向对象编程 (OOP) ✨

引言

Java是一门以面向对象编程(OOP)为基础的编程语言。OOP的核心概念包括类和对象、封装、继承、多态和抽象。

1. 类和对象

在Java中,是创建对象的蓝图,而对象是类的实例。类定义了对象的属性和行为。

示例:

class Person {// 属性String name;  // 姓名int age;      // 年龄// 方法void introduce() {System.out.println("我的名字是 " + name + ",我今年 " + age + " 岁。");// 输出介绍信息}
}public class Main {public static void main(String[] args) {// 创建对象Person person = new Person();person.name = "张三";  // 设置姓名person.age = 30;       // 设置年龄person.introduce();    // 调用介绍方法}
}

2. 封装

封装是将对象的属性和方法私有化,并通过公共的方法(getter和setter)来访问和修改这些属性。这样可以保护数据不被随意修改。

示例:

class Person {// 私有属性private String name;  // 姓名private int age;      // 年龄// getter 方法public String getName() {return name;}// setter 方法public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}// 介绍方法void introduce() {System.out.println("我的名字是 " + name + ",我今年 " + age + " 岁。");// 输出介绍信息}
}public class Main {public static void main(String[] args) {Person person = new Person();person.setName("李四");  // 设置姓名person.setAge(25);       // 设置年龄person.introduce();      // 调用介绍方法}
}

3. 继承

继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码重用和扩展。

示例:

// 父类
class Animal {void eat() {System.out.println("动物正在吃东西。");// 动物吃食物}
}// 子类
class Dog extends Animal {void bark() {System.out.println("狗在叫。");// 狗叫}
}public class Main {public static void main(String[] args) {Dog dog = new Dog();dog.eat();  // 调用父类的方法dog.bark(); // 调用子类的方法}
}

4. 多态

多态允许对象以多种形式出现,主要通过方法重载和方法重写实现。多态使得一个接口可以有不同的实现。

方法重载:同一个类中,方法名相同但参数不同。

方法重写:子类重新定义父类的方法。

示例:

 
// 方法重载
class MathOperations {// 整数相加int add(int a, int b) {return a + b;}// 浮点数相加double add(double a, double b) {return a + b;}
}// 方法重写
class Animal {void sound() {System.out.println("动物发出声音。");// 动物发出声音}
}class Dog extends Animal {@Overridevoid sound() {System.out.println("狗在叫。");// 狗叫}
}public class Main {public static void main(String[] args) {MathOperations math = new MathOperations();System.out.println(math.add(5, 3));      // 调用第一个 add 方法System.out.println(math.add(5.5, 3.5));  // 调用第二个 add 方法Animal animal = new Dog();animal.sound(); // 调用 Dog 类的 sound 方法}
}

5. 抽象

抽象通过定义抽象类和接口来提供一个框架,而具体的实现由子类完成。抽象类可以包含抽象方法和具体方法,接口只能包含抽象方法(Java 8 之后可以包含默认方法和静态方法)。

示例:

 
// 抽象类
abstract class Animal {abstract void sound(); // 抽象方法void eat() {System.out.println("动物正在吃东西。");// 动物吃食物}
}class Dog extends Animal {@Overridevoid sound() {System.out.println("狗在叫。");// 狗叫}
}// 接口
interface AnimalBehavior {void move(); // 移动方法
}class Cat implements AnimalBehavior {@Overridepublic void move() {System.out.println("猫静静地移动。");// 猫静静地移动}
}public class Main {public static void main(String[] args) {Animal dog = new Dog();dog.sound(); // 调用 Dog 类的 sound 方法dog.eat();   // 调用 Animal 类的 eat 方法AnimalBehavior cat = new Cat();cat.move(); // 调用 Cat 类的 move 方法}
}

结论

掌握面向对象编程 (OOP) 的核心概念是成为优秀Java程序员的关键。这些概念不仅有助于编写结构良好、易于维护和扩展的代码,还能提高程序的可读性和可重用性。希望这篇文章对你理解Java的OOP有所帮助!

觉得有用的话可以点点赞 (*/ω\*),支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦  >人<  。

相关文章:

Java [ 基础 ] Java面向对象编程 (OOP) ✨

目录 ✨探索Java基础 Java面向对象编程 (OOP) ✨ 引言 1. 类和对象 2. 封装 3. 继承 4. 多态 5. 抽象 结论 ✨探索Java基础 Java面向对象编程 (OOP) ✨ 引言 Java是一门以面向对象编程&#xff08;OOP&#xff09;为基础的编程语言。OOP的核心概念包括类和对象、封装…...

敏捷开发笔记(第9章节)--开放-封闭原则(OCP)

目录 1&#xff1a;PDF上传链接 9.1 开放-封闭原则&#xff08;OCP&#xff09; 9.2 描述 9.3 关键是抽象 9.3.1 shape应用程序 9.3.2 违反OCP 糟糕的设计 9.3.3 遵循OCP 9.3.4 是的&#xff0c;我说谎了 9.3.5 预测变化和“贴切的”结构 9.3.6 放置吊钩 1.只受一次…...

苹果电脑清理app垃圾高效清理,无需专业知识

在我们的日常使用中&#xff0c;苹果电脑以其优雅的设计和强大的功能赢得了广泛的喜爱。然而&#xff0c;即便是最高效的设备&#xff0c;也无法免俗地积累各种不必要的文件和垃圾&#xff0c;特别是app垃圾。所以&#xff0c;苹果电脑清理app垃圾高效清理&#xff0c;对于大多…...

【算法】(C语言):快速排序(递归)、归并排序(递归)、希尔排序

快速排序&#xff08;递归&#xff09; 左指针指向第一个数据&#xff0c;右指针指向最后一个数据。取第一个数据作为中间值。右指针指向的数据 循环与中间值比对&#xff0c;若大于中间值&#xff0c;右指针往左移动一位&#xff0c;若小于中间值&#xff0c;右指针停住。右…...

模型驱动开发(Model-Driven Development,MDD):提高软件开发效率与一致性的利器

目录 前言1. 模型驱动开发的原理1.1 什么是模型驱动开发1.2 MDD的核心思想 2. 模型驱动开发的优势2.1 提高开发效率2.2 确保代码一致性2.3 促进沟通和协作2.4 方便维护和扩展 3. 实现模型驱动开发的方法3.1 选择合适的建模工具3.1.1 UML3.1.2 BPMN3.1.3 SysML 3.2 建模方法3.2.…...

记录discuz修改用户的主题出售价格

大家好&#xff0c;我是网创有方的站长&#xff0c;今天遇到了需要修改discuz的主题出售价格。特此记录下 方法很简单&#xff1a; 进入用于组-》选择论坛-》批量修改...

WGAN(Wassertein GAN)

WGAN E x ∼ P g [ log ⁡ ( 1 − D ( x ) ) ] E x ∼ P g [ − log ⁡ D ( x ) ] \begin{aligned} & \mathbb{E}_{x \sim P_g}[\log (1-D(x))] \\ & \mathbb{E}_{x \sim P_g}[-\log D(x)] \end{aligned} ​Ex∼Pg​​[log(1−D(x))]Ex∼Pg​​[−logD(x)]​ 原始 GAN …...

Maven基本使用

1. Maven前瞻 Maven官网&#xff1a;https://maven.apache.org/ Maven镜像&#xff1a;https://mvnrepository.com 1.1、Maven是什么 Maven是一个功能强大的项目管理和构建工具&#xff0c;可以帮助开发人员简化Java项目的构建过程。 在Maven中&#xff0c;使用一个名为 pom.…...

在Linux系统中配置GitHub的SSH公钥

在Linux系统中配置GitHub的SSH公钥&#xff0c;可以让您无需频繁输入密码即可与GitHub仓库进行交互&#xff0c;提高工作效率。以下是配置步骤: 第一步&#xff1a; 检查SSH密钥是否存在 首先&#xff0c;检查您的用户目录下的.ssh文件夹中是否已有SSH密钥。打开终端&#xff0…...

小酌消烦暑|人间正清欢

小暑是二十四节气之第十一个节气。暑&#xff0c;是炎热的意思&#xff0c;小暑为小热&#xff0c;还不十分热。小暑虽不是一年中最炎热的时节&#xff0c;但紧接着就是一年中最热的节气大暑&#xff0c;民间有"小暑大暑&#xff0c;上蒸下煮"之说。中国多地自小暑起…...

C语言结构体的相关知识

前言 从0开始记录我的学习历程&#xff0c;我会尽我所能&#xff0c;写出最最大白话的文章&#xff0c;希望能够帮到你&#xff0c;谢谢。 1.结构体类型的概念及定义 1.1、概念&#xff1a; 结构体是一种构造类型的数据结构&#xff0c; 是一种或多种基本类型或构造类型的数…...

RabbitMQ入门教程(精细版二带图)

目录 六 RabbitMQ工作模式 6.1Hello World简单模式 6.1.1 什么是简单模式 6.1.2 RabbitMQ管理界面操作 6.1.3 生产者代码 6.1.4 消费者代码 6.2 Work queues工作队列模式 6.2.1 什么是工作队列模式 6.2.2 RabbitMQ管理界面操作 6.2.3 生产者代码 6.2.4 消费者代码 …...

IO、零拷贝、多路复用、connection、池化

目录 一、IO 模型 二、什么是网络IO 三、什么是零拷贝 四、多路复用 五、java程序、mysql JDBC connection关系 六、connection怎么操作事务 七 、java里面的池化技术 八、线程池7个核心参数 九、线程的状态 一、IO 模型 BIO &#xff1a;同步阻塞io&#xff0c;单线程 内存上下…...

Lua 错误处理

Lua 错误处理 Lua是一种轻量级的编程语言&#xff0c;广泛用于游戏开发、脚本编写和其他应用程序中。在编程过程中&#xff0c;错误处理是一个重要的方面&#xff0c;它可以帮助开发者创建更健壮和可靠的程序。本文将详细介绍Lua中的错误处理机制。 错误类型 在Lua中&#x…...

二刷力扣——单调栈

739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 &#xff0c;用递减单调栈&#xff0c;就可以确定在栈里面的每个比当前元素i小的元素&#xff0c;下一个更大的就是这个i&#xff0c;然后弹出并记录&#xff1b;然后当前元素i入栈&#xff0c;仍然满足递减…...

elementPlus-vue3-ts表格单选和双选实现方式

记录在vue3、ts、element-plus环境下表格单选和多选的实现方式 单选 html部分 <el-table...reftaskTableRefselect"selectClick"... ><el-table-column type"selection" width"50" />... </el-table>ts部分 const taskTabl…...

Linux系统中卸载GitLab

在Linux系统中卸载GitLab&#xff0c;主要可以通过包管理器&#xff08;如apt、yum、rpm等&#xff09;来实现&#xff0c;但具体步骤可能会因GitLab的安装方式&#xff08;如使用包管理器安装、从源代码安装、使用Docker等&#xff09;和Linux发行版的不同而有所差异。以下是一…...

基于STM32F407ZG的FreeRTOS移植

1.从FreeRTOS官网中下载源码 2、简单分析FreeRTOS源码目录结构 2.1、简单分析FreeRTOS源码根目录 &#xff08;1&#xff09;Demo&#xff1a;是官方为一些单片机移植FreeRTOS的例程 &#xff08;2&#xff09;License&#xff1a;许可信息 &#xff08;3&#xff09;Sourc…...

【IT领域新生必看】Java编程中的神奇对比:深入理解`equals`与`==`的区别

文章目录 引言什么是操作符&#xff1f;基本数据类型的比较示例&#xff1a; 引用类型的比较示例&#xff1a; 什么是equals方法&#xff1f;equals方法的默认实现示例&#xff1a; 重写equals方法示例&#xff1a; equals与的区别比较内容不同示例&#xff1a; 使用场景不同示…...

WEBHTTP

目录 理解HTTP协议请求流程 1 1 Web基础 2 Hosts文件 1 1 2网页与HTML 2 HTML概述 1 1 3静态网页与动态网页 1.2HTTP协议 1 2 1 HTTP协议概述 1 2 2 HTTP方法 HTTP支持几种不同的请求命令&#xff0c;这些命令被称为HTTP方法(HTTP method 表1一3 HTTP方法 表1&#…...

开源STK插件模块大全:提升你的空天地一体化仿真效率

开源STK插件模块大全&#xff1a;提升空天地一体化仿真效率的实战指南 如果你已经熟悉STK的基础操作&#xff0c;却还在为复杂的星座仿真流程和有限的分析功能而头疼&#xff0c;那么开源插件模块将成为你的效率倍增器。本文将带你深入探索那些被专业用户私藏的工具箱&#xff…...

手把手教你用Matlab/Simulink搭建VSG虚拟阻抗模型,搞定新能源并网振荡难题

新能源并网VSG虚拟阻抗控制实战&#xff1a;从Simulink建模到振荡抑制 电力电子工程师们正面临一个棘手难题——新能源并网系统中的宽频振荡。当构网型变流器&#xff08;GFM&#xff09;在强电网环境下运行时&#xff0c;次同步和超同步频段的负阻尼特性可能导致系统失稳。虚拟…...

计算机专业毕业设计题目效率提升指南:从选题到部署的工程化实践

作为一名刚刚完成毕业设计的计算机专业学生&#xff0c;我深刻体会到了从选题到最终部署答辩这一路上的“坑”与“痛”。很多同学和我一样&#xff0c;前期选题纠结&#xff0c;中期开发混乱&#xff0c;后期部署手忙脚乱&#xff0c;最终答辩演示时还可能出现各种意外。为了帮…...

# React 发散创新:从状态管理到组件化架构的极致实践在前端开发领域,React

React 发散创新&#xff1a;从状态管理到组件化架构的极致实践 在前端开发领域&#xff0c;React 已经成为构建现代 Web 应用的事实标准。但你是否曾思考过——如何让 React 不只是“写页面”&#xff0c;而是真正成为驱动业务逻辑的核心引擎&#xff1f; 本文将带你突破常规思…...

解向量前33位是DG位置,后33位是无功补偿容量

3.基于遗传算法的配电网优化配置 主要内容&#xff1a;分布式电源、无功补偿装置接入配电网&#xff0c;考虑配电网经济性和电能质量为目标函数&#xff0c;使用遗传算法进行优化配置&#xff0c;在IEEE33节点&#xff0c;118节点系统进行了仿真验证。 文件夹内运行main函数。配…...

ChatTTS 小说播音参数优化指南:如何实现自然流畅的语音合成

最近在做一个有声小说项目&#xff0c;尝试了多种语音合成方案&#xff0c;最终发现 ChatTTS 在中文小说播音的灵活性和自然度上表现相当不错。不过&#xff0c;刚上手时&#xff0c;直接使用默认参数生成的语音总感觉“味儿不对”&#xff0c;要么像机器人念稿&#xff0c;要么…...

解放你的音乐库:NCMconverter音频格式转换全攻略

解放你的音乐库&#xff1a;NCMconverter音频格式转换全攻略 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 当你下载了喜爱的音乐却发现是无法播放的NCM格式时&#xff0c;当你…...

JavaScript代码保护实战:用javascript-obfuscator给你的前端穿上防弹衣

JavaScript代码保护实战&#xff1a;用javascript-obfuscator打造坚不可摧的前端防线 1. 为什么前端代码需要保护&#xff1f; 记得去年参与一个电商项目时&#xff0c;团队花三个月开发的核心促销算法&#xff0c;上线一周就被竞争对手完整"借鉴"。检查发现对方直…...

RWKV7-1.5B-g1a效果对比:RWKV7-1.5B vs RWKV6-3B在中文摘要任务F1提升11%

RWKV7-1.5B-g1a效果对比&#xff1a;RWKV7-1.5B vs RWKV6-3B在中文摘要任务F1提升11% 1. 模型介绍 rwkv7-1.5B-g1a 是一个基于 RWKV-7 架构的多语言文本生成模型&#xff0c;特别适合处理基础问答、文案续写、简短总结和轻量中文对话任务。相比前代RWKV6-3B模型&#xff0c;它…...

AutoGen Studio中的强化学习应用:智能决策系统开发

AutoGen Studio中的强化学习应用&#xff1a;智能决策系统开发 1. 引言 想象一下&#xff0c;你正在构建一个智能决策系统&#xff0c;需要让多个AI代理协同工作&#xff0c;像一支训练有素的团队一样做出复杂决策。传统方法需要大量编码和调试&#xff0c;但现在有了AutoGen…...