java面向对象编程【基础篇】之基础概念
目录
- 🚀前言
- 🤔面向过程VS面向对象
- 💯面向过程编程(POP)
- 💯面向对象编程(OOP)
- 💯两者对比
- 🌟三大特性
- 💯封装性
- 💯继承性
- 💯多态性
- 🦜类与对象
- 💯类与对象的关系
- 💯类的定义
- 💯对象的创建和使用
🚀前言
大家好!我是 EnigmaCoder。
- 本文介绍java面向对象编程的基本概念,主要包含面向对象与面向过程的区别、面向对象编程的三大特性、类与对象等。
🤔面向过程VS面向对象
💯面向过程编程(POP)
- 定义:以“
过程
”(即算法或操作步骤)为核心组织代码,将复杂的问题拆分成一系列线性的、顺序执行的步骤(函数),通过函数调用和数据传递完成任务。 - 其核心逻辑在于:
程序=数据结构+算法
。 - 简单的说,其关注的是“
做什么
”,通过“第一步做什么、第二步做什么
”来一步一步解决问题。数据作为函数的输入与输出处于被动的被处理地位。
💯面向对象编程(OOP)
- 定义:以“
对象
”为核心组织代码,将数据(属性)和操作数据的方法(行为)封装成一个独立的单元(类),通过对象之间的交互(调用方法)解决问题。 - 其核心逻辑在于:
程序=多个对象+对象间的消息传递
。 - 关注“
谁来做
”,将问题抽象为多个具有明确职责的对象,每个对象自主管理自身数据,并通过公开接口与其他对象协作。
💯两者对比
维度 | 面向过程(POP) | 面向对象(OOP) |
---|---|---|
核心 | 以「步骤/流程」为中心(关注“如何做”)。 | 以「实体(对象)」为中心(关注“谁来做”)。 |
代码单元 | 函数(数据与逻辑分离)。 | 类/对象(数据与逻辑封装在一起)。 |
组织方式 | 线性流程,函数按顺序调用。 | 模块化协作,对象通过接口交互。 |
复用性 | 低(仅函数复用,需手动传递数据)。 | 高(通过继承/组合复用类的属性和行为)。 |
维护成本 | 高(修改易影响多处逻辑)。 | 低(封装细节,外部调用不感知内部变化)。 |
适用场景 | 简单任务、算法实现(如排序、脚本)。 | 复杂系统、多实体协作(如电商、游戏引擎)。 |
一句话区分
- POP:按步骤做事,适合“小而简”;
- OOP:让对象分工协作,适合“大而变”。
🌟三大特性
💯封装性
- 两个含义:一是指将对象的属性和行为看成一个整体,并封装到一个密不可分的独立单元中;二是指信息隐藏,进行合理隐藏,合理暴露。
- 封装机制为封装在一个整体的变量及方法规定了不同级别的“
可见性
”或访问权限,以保证外界不能随意更改其内部的属性值,也不能任意调用其内部的功能方法。
💯继承性
- 继承指的是首先拥有反映事物
一般特性
的类,然后在此基础上派生出反映特殊
事物的类。 - 例如,已有了汽车的类,该类中包含了汽车普遍拥有的属性和行为,进一步产生了赛车的类,该类不仅继承了汽车类拥有的属性和行为,也拥有自己特有的属性和行为。
- 继承机制大大提高了代码的可复用性,提高了软件的开发效率,降低了程序产生错误的可能性,也为程序的修改补充提供了便利。
- 子类只能继承一个父类的,称为
单继承
;子类允许继承多个父类的,称为多继承
,java不支持多继承。
💯多态性
- 多态允许程序中出现
重名
现象。java语言有方法重载和对象多态两种形式的多态。 - 方法重载:在一个类中,允许出现重名的方法,但方法的参数不同,其实现的功能也不同。
- 对象多态:子类对象可以与父类对象进行相互的转换,而且根据其对象的不同完成的功能也不同。
- 多态的特性使得程序的抽象程度和简捷程度更高,有利于程序员间的协同开发。
🦜类与对象
💯类与对象的关系
在面向对象中类和对象是最基本、最重要的组成单元。
- 类实际上是客观世界中某些群体的一些基本特征抽象,而对象则表示该基本特征下的具体的事物。
- 例如,人这个概念即为一个类,其属性是姓名、性别等等,其行为是吃饭、睡觉等等。在这些基本特征下的具体的人(如张三)即为对象。每个对象通过属性和行为的不同进行区分。
💯类的定义
类由属性和行为组成,属性即为一个个的变量,行为即为方法。
- 类的定义格式:
class 类名称{数据类型 属性;public 返回值的数据类型 方法名称 (参数1,参数2 ...){程序语句;return 表达式;}}
- 根据格式写一个
Student
类:
public class Student {String name;int age;String gender;double height;double weight;double Chinesescore;double mathscore;public void AllScore() {double sum = Chinesescore + mathscore;System.out.println(name+"总成绩为:" + sum);}public void AverageScore() {double average = (Chinesescore + mathscore)/2;System.out.println(name+"平均成绩为:" + average);}
}
💯对象的创建和使用
- 对象的创建:
类名 对象名称 = null; //声明对象
对象名称 = new 类名(); //实例化对象,只要有关键字new就表示开辟新的堆内存空间
当然,也可以一步到位:
类名 对象名称 = new 类名();
- 对象的使用:
访问属性:对象名称.属性名;
访问方法:对象名称.方法名();
以上述的Student类写一个Test类为例:
public class Test {public static void main(String[] args) {// 创建对象的格式:类名 对象名 = new 类名();student s1=new student();s1.name="张三";s1.age=18;s1.gender="男";s1.height=1.88;s1.weight=80.5;s1.Chinesescore=96;s1.mathscore=100;System.out.println(s1.name);System.out.println(s1.age);System.out.println(s1.gender);System.out.println(s1.height);System.out.println(s1.weight);s1.AllScore();s1.AverageScore();}
}
运行结果为:
张三
18
男
1.88
80.5
张三总成绩为:196.0
张三平均成绩为:98.0
在 Java 等编程语言运行时,内存被划分为栈、堆和方法区,三者分工协作:栈内存遵循后进先出原则,存储基本数据类型变量的具体值和引用数据类型变量指向对象的地址,同时在方法调用时创建栈帧记录局部变量、参数和返回地址,方法执行完后栈帧被清理;堆内存如同大型仓库,使用new关键字创建的对象实例存放在此,包含对象的属性、方法等信息;方法区则存放类的结构、静态变量、常量池等信息,类的方法在此存储,当方法被调用时,其代码会加载到栈内存中执行,执行完毕后栈内存中的相关资源被释放,但方法区中的类信息仍保留,直到类被卸载 。
相关文章:
java面向对象编程【基础篇】之基础概念
目录 🚀前言🤔面向过程VS面向对象💯面向过程编程(POP)💯面向对象编程(OOP)💯两者对比 🌟三大特性💯封装性💯继承性💯多态性…...
Oceanbase单机版上手示例
本月初Oceanbase单机版发布,作为一个以分布式起家的数据库,原来一个集群动辄小十台机器,多着十几台几十台甚至更多,Oceanbase单机版的发布确实大大降低了硬件部署的门槛。 1.下载安装介质 https://www.oceanbase.com/softwarece…...
深度学习基础--CNN经典网络之InceptionV3详解与复现(pytorch)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 InceptionV3是InceptionV1的升级版,虽然加大了计算量,但是当时效果是比VGG效果要好的。本次任务是探究InceptionV3结构并进行复…...
VOIP通信中的错误码
cancle报文 Reason: SIP;cause200;text"Call completed elsewhere" Reason: Q.850;cause26表示取消的原因是呼叫在其他地方已经完成表示Q.850标准中的原因码26,通常对应于“呼叫被取消”(Call Cancelled)487 Request Terminated Re…...
C++ STL编程-vector概念、对象创建
vector 概念:是常见的一种容器,被称为“柔性数组”。 在vector中,front()是数组中的第一个元素,back()是数组的最后一个元素。begin()是是指向第一个元素,end()是指向back()的后一个元素 vector的对象创建࿰…...
easyexcel使用模板填充excel坑点总结
1.单层map设置值是{属性},那使用两层map进行设置值,是不是可以使用{属性.属性},以为取出map里字段只用{属性}就可以设置值,那再加个.就可以从里边map取出对应属性,没有两层map写法 填充得到的文件打开报错 was empty (…...
C#学习第16天:聊聊反射
什么是反射? 定义:反射是一种机制,允许程序在运行时获取关于自身的信息,并且可以动态调用方法、访问属性或创建实例。用途:常用于框架设计、工具开发、序列化、代码分析和测试等场景 反射的核心概念 1. 获取类型信息…...
【Unity】使用Cinemachine+CharacterController实现第三人称视角下的角色视角、移动和跳跃控制
1.初始配置 安装Cinemachine插件给角色添加CharacterConroller创建Cinemachine-->Free Look Camera在Free Look Camera中调整参数,Y Axis勾选Inver,X Axis取消勾选InverFree Look Camera要看向角色 跟随角色(自行设置,我就不…...
如何通俗的理解transformer架构编码器和解码器干的活
我们可以用生活中的比喻来理解Transformer的编码器和解码器,以及解码器中两种注意力的作用: 一、编码器(Encoder):理解信息的「分析师团队」 想象你要翻译一句话,比如把中文“今天天气很好”翻译成英文。编…...
React 受控表单绑定基础
React 中最常见的几个需求是: 渲染一组列表绑定点击事件表单数据与组件状态之间的绑定 受控表单绑定是理解表单交互的关键之一。 📍什么是受控组件? 在 React 中,所谓“受控组件”,指的是表单元素(如 &l…...
UMG:ListView
1.创建WEB_ListView,添加Border和ListView。 2.创建Object,命名为Item(数据载体,可以是其他类型)。新增变量name。 3.创建User Widget,命名为Entry(循环使用的UI载体).添加Border和Text。 4.设置Entry继承UserObjectListEntry接口。 5.Entry中对象生成时…...
实验五 内存管理实验
实验五 内存管理实验 一、实验目的 1、了解操作系统动态分区存储管理过程和方法。 2、掌握动态分区存储管理的主要数据结构--空闲表区。 3、加深理解动态分区存储管理中内存的分配和回收。 4、掌握空闲区表中空闲区3种不同放置策略的基本思想和实现过程。 5、通过模拟程…...
初识 Firebase 与 FPM
Firebase 是什么 ? Firebase 是 Google 旗下面向 iOS、Android、Web 与多端框架(Flutter、Unity 等)的应用开发平台,提供从「构建 → 发布与运维 → 增长」全生命周期的一站式后端即服务(BaaS)。它把实时数据库、托管…...
探索C++中的数据结构:栈(Stack)的奥秘
引言 栈是计算机科学中最基础且重要的数据结构之一,它像一摞盘子一样遵循"后进先出"(LIFO)的原则。无论是函数调用、表达式求值,还是浏览器前进后退功能,栈都扮演着关键角色。本文将深入解析栈的C实现及其应…...
vue3 nprogress 使用
nprogress 介绍与作用 1.nprogress 是一个轻量级的进度条组件,主要用于在页面加载或路由切换时显示一个进度条,提升用户体验。它的原理是通过在页面顶部创建一个 div,并使用 fixed 定位来实现进度条的效果 2.在 Vite Vue 3 项目中…...
MCP(Model Context Protocol 模型上下文协议)科普
MCP(Model Context Protocol,模型上下文协议)是由人工智能公司 Anthropic 于 2024年11月 推出的开放标准协议,旨在为大型语言模型(LLM)与外部数据源、工具及服务提供标准化连接,从而提升AI在实际…...
韩媒专访CertiK创始人顾荣辉:黑客攻击激增300%,安全优先的破局之路
4月17日,韩国知名科技媒体《韩国IT时报》(Korea IT Times)发布了对CertiK联合创始人兼CEO顾荣辉教授的专访。双方围绕CertiK一季度《HACK3D》安全报告,就黑客攻击手法的迭代和安全防御技术的创新路径等,展开深度对话。 顾荣辉认为࿰…...
华为openEuler操作系统全解析:起源、特性与生态对比
华为openEuler操作系统全解析:起源、特性与生态对比 一、起源与发展历程 openEuler(欧拉操作系统)是华为于2019年开源的Linux发行版,其前身为华为内部研发的服务器操作系统EulerOS。EulerOS自2010年起逐步发展,支持华…...
从零实现Git安装、使用
一、git安装 Git官方下载 1.下载exe程序 2.双击安装,一直点击next,默认安装 安装完成后,在任意文件夹右键,出现下图所示,即为安装成功。 3.【Git Bash Here】调出命令窗口,设置用户名和 email 地址。 gi…...
leetcode刷题日记——单词规律
[ 题目描述 ]: [ 思路 ]: 题目要求判断字符串 s 中的单词是否按照 pattern 这种模式排列具体思路和 205. 同构字符串基本一致,可以通过 hash 存储来实现思路二,通过字符串反推 pattern,如果一致,则遵循相…...
Ubuntu 修改语言报错Failed to download repository information
1.进入文件(ps:vim可能出现无法修改sources.list文件的问题) sudo gedit /etc/apt/sources.list2.修改(我是直接增添以下内容在其原始源前面,没有删原始内容)文件并保存,这里会替换原文件 deb http://mirrors.aliyun.com/ubuntu/ focal mai…...
烹饪与餐饮管理实训室数字课程开发方案
烹饪与餐饮管理专业需要具有餐饮产品设计、研发的能力; 具有饮食美学、科学配餐与高端宴席设计的能力; 具有餐饮企业、中央厨房运营管理的能力; 具有餐饮信息化系统应用、数字化运营的能力,这些能力的培养,需要烹饪与餐…...
关于模拟噪声分析的11个误区
目录 1. 降低电路中的电阻值总是能改善噪声性能 2. 所有噪声源的噪声频谱密度可以相加,带宽可以在最后计算时加以考虑 3. 手工计算时必须包括每一个噪声源 4. 应挑选噪声为ADC 1/10的ADC驱动器 5. 直流耦合电路中必须始终考虑1/f噪声 6. 因为1/f噪声随着频率降…...
基于 S2SH 架构的企业车辆管理系统:设计、实现与应用
在企业运营中,车辆管理是一项重要工作。随着企业规模的扩大,车辆数量增多,传统管理方式效率低下,难以满足企业需求。本文介绍的基于 S2SH 的企业车辆管理系统,借助现代化计算机技术,实现车辆、驾驶员和出车…...
51单片机实验七:EEPROM AT24C02 与单片机的通信实例
目录 一、实验环境与实验器材 二、实验内容及实验步骤 三、proteus复位电路 1.改电阻的阻值(方法一) 2.改电阻的属性(方法2) 一、实验环境与实验器材 环境:Keli,STC-ISP烧写软件,Proteus. …...
【TeamFlow】 1 TeamFlow 去中心化生产协同系统架构
总体架构设计 采用四层混合架构,结合分层设计与去中心化网络: #mermaid-svg-qBgw9wMd8Gi0gOci {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qBgw9wMd8Gi0gOci .error-icon{fill:#552222;}…...
第 8 期:条件生成 DDPM:让模型“听话”地画图!
本期关键词:Conditional DDPM、Class Embedding、Label Control、CIFAR-10 条件生成 什么是条件生成(Conditional Generation)? 在标准的 DDPM 中,我们只是“随机生成”图像。 如果我想让模型生成「小狗」怎么办&…...
树莓派超全系列教程文档--(32)config.txt常用音频配置
config.txt常用音频配置 板载模拟音频(3.5mm耳机插孔)audio_pwm_modedisable_audio_ditherenable_audio_ditherpwm_sample_bits HDMI音频 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 板载模拟音频(3.5mm耳机…...
Perf学习
重要的能解决的问题是这些: perf_events is an event-oriented observability tool, which can help you solve advanced performance and troubleshooting functions. Questions that can be answered include: Why is the kernel on-CPU so much? What code-pa…...
量子神经网络编译器开发指南:从理论突破到产业落地全景解析
本文深度剖析IBM Qiskit 5.0量子经典混合编译器的技术架构,详解如何基于含噪量子处理器实现MNIST手写数字分类任务(准确率达89%)。结合本源量子云、百度量子等国内平台免费配额政策,系统性阐述量子神经网络开发的技术路线与资源获…...
守护者进程小练习
守护者进程含义 定义:守护进程(Daemon)是运行在后台的特殊进程,独立于控制终端,周期性执行任务或等待事件触发。它通常以 root 权限运行,名称常以 d 结尾(如 sshd, crond)。 特性&a…...
研究生面试常见问题
研究生面试是考研复试的重要环节,面试表现直接关系到录取结果。以下从面试流程、常见问题分类及回答技巧等方面为您整理了相关内容,帮助您更好地准备面试。 一、研究生面试的基本流程 自我介绍:通常需要准备1分钟左右的中文或英文自我介绍&a…...
极狐GitLab 登录限制如何设置?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 登录限制 (BASIC SELF) 您可以使用登录限制自定义 Web 界面以及基于 HTTP(S) 的 Git 的身份验证限制。 设置 要访问登录限…...
AI驱动商业变革:零售行业的智能化跃迁
引言:AI技术迈入黄金时代 2024年成为生成式AI(Gen AI)全面落地的关键年。据麦肯锡《技术趋势展望》报告,生成式AI相关投资同比增长7倍,其经济价值预计达2.6-4.4万亿美元[1]。在零售领域,该技…...
初始图像学(6)
Camera类 我们之前学了很多的图形学知识和相关的程序,现在我们停下脚步,来好好整理一下我们学习的内容,我们将之前的视口代码和渲染代码合并到一个新的单类camera.h,这个类主要负责两项任务: 构建并发射光线到世界中 …...
【React】通过 fetch 发起请求,设置 proxy 处理跨域
fetch 基本使用跨域处理 fetch 基本使用 在node使用原生ajax发请求:XMLHttpRequest()1.获取xhr对象 2.注册回调函数 3.设置参数,请求头 4.发起连接原生ajax没有带异步处理 promise;原生ajax封装一下,以便重复调用jQuery&#…...
好数对的数目
题目描述 给你一个整数数组 nums。 如果一组数字 (i, j) 满足 nums[i] nums[j] 且 i < j,就可以认为这是一组 好数对。 返回 好数对 的数目。 示例 示例 1: 输入:nums [1,2,3,1,1,3] 输出:4 解释: 有 4 组好…...
Animated Raindrop Ripples In HLSL
这节课是利用材质做雨滴i效果 首先是创建一个圆环,实际上他就是为了创建一个圆,但是是空心的,可以看之前我的做法,这里以他的为准 创建圆环 就是当uv的点在max_radius和min_radius之间的时候绘制。 他这里写了ringThickness&a…...
Linux学习——守护进程编程
一、守护进程含义及实现过程 1、含义 守护进程(Daemon Process) 是操作系统中一种在后台长期运行的特殊进程,通常不与用户直接交互。它独立于控制终端,用于执行周期性任务或系统服务(如日志管理、网络服务等ÿ…...
【C++】 —— 笔试刷题day_19
一、小易的升级之路 题目解析 小易现在要打游戏,现在游戏角色的初始能力值为a,我们会遇到n个怪,这些怪物的防御值为b1、b2、b3...,如果我们的能力值要高于或者等于怪物的防御值,那我们的能力值就会加bi;如…...
gitee提交大文件夹
# 安装 Git LFS(如果未安装) git lfs install# 跟踪整个大文件夹(或特定大文件类型) git lfs track "big_folder/**" # 替换为你的文件夹名# 提交并推送 git add .gitattributes big_folder/ git commit -m "add …...
纯CSS实现自动滚动到底部
<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>自动滚动到底部</title><style>*…...
WInform当今技术特性分析
Windows Forms (WinForms) 技术特性分析 引言 Windows Forms (WinForms) 作为微软最早推出的基于.NET的图形用户界面开发框架,已经存在了20多年。在如今充满了各种现代UI框架的软件开发生态系统中,WinForms仍然保持着其独特的地位。本文将深入分析WinF…...
6.5 GitHub监控系统实战:双通道采集+动态调度打造高效运维体系
GitHub Sentinel Agent 定期更新功能设计与实现 关键词:GitHub API 集成、定时任务调度、Python 爬虫开发、SMTP 邮件通知、系统稳定性保障 1. GitHub 项目数据获取功能 1.1 双通道数据采集架构设计 #mermaid-svg-ZHJIMXcMAyDHVhmV {font-family:"trebuchet ms",v…...
自动驾驶安全模型研究
自动驾驶安全模型研究 自动驾驶安全模型研究 自动驾驶安全模型研究1.自动驾驶安全模型概述2. 自动驾驶安全模型应用3. 自动驾驶安全模型介绍3.1 Last Point to Steer3.2 Safety Zone3.3 RSS (Responsibility-Sensitive Safety)3.4 SFF (Safety Force Field)3.5 FSM (Fuzzy Safe…...
4090租用,各云GPU平台价格对比清单及建议
根据各平台的价格和型号配置,以下是通过DeepSeek-R1进行分析后,给出的建议。 一、按显存需求推荐 1.24G显存需求(适合常规AI训练/推理、中小模型) 性价比首选:智星云(1.35元/小时) ࿰…...
Linux:简单指令(二)
文章目录 man ~~echocatcp指令which ~~mvless时间相关的指令find 要么对内容要么对属性操作 决定路径开始定位文件,也可以相对路径 家目录/ man ~~ 1查询具体命令 我们可以man man 可以看man 的描述 我们可以man 数字 ~~ 可以从上到下查询 2查询仿命令 3查询具体接口…...
代码随想录算法训练营day7(字符串)
华子目录 反转字符串中的单词思路 右旋字符串思路 反转字符串中的单词 https://leetcode.cn/problems/reverse-words-in-a-string/description/ 思路 先将字符串s按照空格切分为列表s_list(使用s.split())再进行反转操作再将列表拼接为字符串ÿ…...
Android studio—socketIO库的emit与return的使用
文章目录 一、Socket.IO库简单使用说明1. 后端 Flask Flask-SocketIO2. Android 客户端集成 Socket.IO3. 布局文件注意事项 二、接受服务器消息的二种方法1. 客户端接收通过 emit 发送的消息功能使用场景后端代码(Flask-SocketIO)客户端代码(…...
【Drools+springboot3规则匹配】
文章目录 一、 业务场景概述二、整体技术架构三、Drools概述1. Drools 简介2. Drools Rete 算法与flink-cep的区别?2.1 Rete 算法概述2.2 Flink CEP 概述四、代码实现4.1 导入依赖4.2 从kafka消费数据4.3 核心类,触发匹配操作并将匹配数据写入mysql4.4 Drools 管理4.5 相关的…...