Java面向对象,你真的会用吗?

香橙派5Max + Realsense D435i + Fast-Drone-250:手把手教你搭建一个完整的无人机视觉开发环境 本文详细介绍了如何利用香橙派5Max、Realsense D435i深度相机和Fast-Drone-250项目搭建完整的无人机视觉开发环境。从硬件连接到ROS配置,再到项目部署与性能优化,提供全栈式实战指南,助力开发者快速实现SLAM算法验证和自主导航功能开发。 阅读详情

就在今天,自己写的一个C#项目,同事说用面向对象的思想写比较好,其实面向对象思想,感觉这个东西谁不知道啊,但是,确实这个程序没有使用,使用的好处是什么呢?又要如何使用呢?这是很值得思考的问题。

面向对象简称OO(Object Oriented),20世纪80年代以后,有了面向对象分析(OOA)、面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。

对Java语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以独立存在,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。

一、对象的概念

Java是面向对象开发的编程语言,对象就是面向对象程序设计的核心。

所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。

对象有以下特点:

  • 对象具有属性和行为
  • 对象具有变化的状态
  • 对象具有唯一性
  • 对象都是某个类别的实例
  • 一切皆是对象,真实世界中的所有事物都可以视为对象

例如,在真实世界的学校里,会有学生和老师等实体,学生有学号、姓名、所在班级等属性(数据),学生还有学习、提问、吃饭和走路等操作。学生只是抽象的描述,这个抽象的描述称为“类”。在学校里活动的是学生个体,即张同学、李同学等,这些具体的个体称为“对象”,“对象”也称为“实例”。

二、面向对象的三大核心特性

面向对象开发更有利于人们开拓思维,在具体的开发过程中便于程序的划分,方便程序员分工合作,提高开发效率。面向对象程序设计有以下优点。

1、可重用性

代码重复使用,减少代码量,提高开发效率。

下面介绍的面向对象的三大核心特性(继承、封装、多态)都是围绕这个核心的。

2、可扩展性

指新的功能可以很容易地加入到系统中来,便于软件修改。

3、可管理性

能够将功能与数据结合,方便管理。

该开发模式之所以使程序设计更加完善和强大,主要是因为面向对象具有继承、封装、多态三大核心特性。

三、继承性

如同生活中的子女继承父母拥有的所有财产,程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系。Java 只支持单继承。

例如定义一个语文老师类和数学老师类,如果不采用继承方式,那么两个类中需要定义的属性和方法如图 1 所示。

从图 1 能够看出,语文老师类和数学老师类中的许多属性和方法相同,这些相同的属性和方法可以提取出来放在一个父类中,这个父类用于被语文老师类和数学老师类继承。当然父类还可以继承别的类,如图 2 所示。

总结图 2 的继承关系,可以用概括的树形关系来表示,如图 3 所示。

从图 3 中可以看出,学校主要人员是一个大的类别,老师和学生是学校主要人员的两个子类,而老师又可以分为语文老师和数学老师两个子类,学生也可以分为班长和组长两个子类。

使用这种层次形的分类方式,是为了将多个类的通用属性和方法提取出来,放在它们的父类中,然后只需要在子类中各自定义自己独有的属性和方法,并以继承的形式在父类中获取它们的通用属性和方法即可。

四、封装性

封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外界干扰且不被误用。封装的目的在于保护信息,使用它的主要优点如下:

  • 保护勒种的信息,它可以阻止在外部定义的代码随意访问内部代码和数据。
  • 隐藏细节信息,一些不需要程序员修改和使用的信息,比如提款机中的键盘,用户只需要知道哪个键实现什么操作即可,至于它内部是如何运行的,用户不需要知道。
  • 有助于建立各个系统之间的松耦合关系,提高系统的独立性。当一个系统的实现方式发生变化时,只要它的接口不变,就不会影响其他系统的使用。例如U盘,不管里面的存储方式怎么改变,只要U盘上的USB接口不变,就不会影响用户的正常使用。
  • 提高软件的复用率,降低成本。每个系统都是一个相对独立的整体,可以在不同的环境下得到使用。例如,一个 U 盘可以在多台电脑上使用。

Java语言的基本封装单位是类。由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制。java提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问,这样就可以确保不会发生不希望的事情。

五、多态性

面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。多态概念可以用树形关系来表示,如图4所示。

从图 4 中可以看出,老师类中的许多属性和方法可以被语文老师类和数学老师类同时使用,这样也不易出错。

 

Halcon 3D视觉实战:5步将线激光高度数据转为可分析的深度图与点云 本文详细介绍了如何利用Halcon平台将线激光高度数据转换为深度图与点云的5步实战方法。通过具体代码示例和工业检测案例(如锂电池胶水测量),帮助工程师高效处理3D视觉数据,实现从原始数据到三维可视化的完整技术链路。 阅读详情

相关推荐

Cortex-M异常处理深度解析:从HardFault到调试实战

在嵌入式开发中,Cortex-M系列处理器的异常处理机制是保障系统可靠性的核心。然而,面对HardFault、MemManage、BusFault等异常时,开发者往往陷入迷茫。本文结合SEGGER AN00016和Keil AN209两篇权威文档,深入剖析异常根源、寄存器解析及调试技巧,并通过代码实例演示如何快速定位问题。

汽车电子软件领域知识分享 2534

java面对对象的优点_与面向过程相比,面向对象优缺点是什么

由于java是面向对象的计算机编程语言,面向对象性是它最大的特征,因此在java语言的学习中,java零基础的初学者一定会遇到面向过程与面向对象二者之间的对比问题。Java是应用最广泛的编程语言,面向对象性使它受到程序员们的喜爱,那么面向对象优缺点是什么呢,下面为刚接触java的新手朋友们来解答一下这个问题。随着互联网的发展,越来越多的人想要学习java编程技术,学习java语言首先要知道的就是什...

weixin_39733821的博客 1828

麒麟系统下的多媒体革命:VLC在kylinV10上的性能优化与调试技巧

本文详细介绍了在麒麟kylinV10系统上优化VLC多媒体播放性能的实战技巧,特别针对飞腾FT-2000/4硬件平台。从源码编译调优到硬件加速配置,提供全面的性能提升方案,帮助开发者在国产操作系统上构建高效媒体播放环境。

weixin_29168675的博客 458

面向对象编程与传统方式的编程相比有哪些优点?

  讲解一下面向对象编程与传统方式的编程相比有哪些优点。

dawn0718的专栏 1548

c语言【分糖果】2023蓝桥杯4124(枚举,递归,dfs)

但是这是不符合我们糖果刚好分完的条件的,我们应该往回退到上一层,也就是孩子6这层,然后j+1=3,孩子7分到3个第二种糖果,这也不符合我们糖果刚好分完的条件,然后就会再次回退到孩子6这里,然后j+1=4,让我们的孩子7获得5块第二种糖果,然后还是不符合糖果刚分完的条件,于是再一次退回到孩子6这里,然后就会有外循环i+1=1,j=1,孩子7分到1块第一种糖果1块第二块糖果......然后就是这样的不停地回溯,试探,直到把整棵树遍历一遍,并且记录所有的满足条件的组合。先放一下我的代码,我的代码超时啦救命!

weixin_74331419的博客 732

Multisim14.0仿真实战:从零搭建RS/JK触发器电路(附真值表+波形图)

本文通过Multisim 14.0软件,提供了从零搭建RS触发器和JK触发器电路的详细仿真实战教程。内容涵盖核心概念解析、电路搭建步骤、动态波形观测及真值表分析,重点探讨了RS触发器的非法状态问题以及JK触发器的四种工作模式,帮助读者直观理解时序逻辑电路的“记忆”功能与设计要点。

weixin_29175469的博客 275

Java是一种面向对象的编程语言,它有哪些主要特性和优势?

标准的Java类库(Java API)提供了大量的预定义类和接口,涵盖了各种常见的功能和任务,如输入输出、网络通信、数据库访问等。此外,Java还有许多优秀的开源框架和工具,如Spring、Hibernate、Maven等,提供了更高级的功能和解决方案,促进了快速开发和代码重用。总结起来,Java作为一种面向对象的编程语言,具有简单易学、面向对象的特性、平台无关性、强大的生态系统、内存管理和垃圾回收、强大的安全性以及多线程支持等优势。

qq_39427812的博客 4698

通信工程学习:什么是OLT光线路终端

OLT(光线路终端)是无源光网络(PON)的核心局端设备,负责光/电信号转换、数据处理、带宽分配及用户管理。具有高带宽、低损耗、高安全性和易维护等技术特点,广泛应用于家庭、企业及公共机构宽带接入。未来将向更高性能、智能化方向发展,结合SDN/NFV等新技术,提升网络服务质量。

limengshi138392的博客 4366

面向对象的优点

优点 1.重用性利于开发速度,如果你想开发某个功能发现他实现起来很麻烦,这个时候有另一技术能很好的解决时其优势就发挥出来了 2.封装性/抽象性:结构清晰,很标准,规范化,易于理解,可读性更强 3.继承,容易扩展,在大框架不变的情况下很容易就开发出适合自己的功能 缺点 执行速度会打折扣 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三

qf2019的博客 3187

QtQuick QML教程(2):qml语法介绍

​ qml一个普通的文本文件,后缀是.qml, 一个qml文件主要由两部分组成:(1) import语句 :这个就像C++中的头文件, 使用 import 导入qml需要的相关模块,可以查询Qt文档进行导入,注意每个版本的Qt模块声明可能都不同,相比于QWidget项目,QtQuick的变动是很大的;(2) QML对象树 :根对象是Window, 然后可以在Window中添加各种控件,例如按钮,文本,菜单等。

琅嬛福地 551

【知识分享】IBIS 建模指南 03

本文介绍了差分缓冲器的数据提取方法,重点分析了差分系统与单端系统的核心差异。文章详细阐述了差分接收机和驱动器的结构特点、工作原理及建模方法,指出全差分结构具有优异的电源噪声抑制能力。针对IBIS建模规范,作者提出了三维I-V曲面数据提取技术,并介绍了共模/差模电流分离、片上端接处理以及V-T表生成的解决方案。文章还探讨了差分电容(C_diff)的测量方法和数据简化策略,为复杂差分缓冲器的精确建模提供了系统化的技术路径。

一只豌豆象的博客 1282

面向对象的好处

提到面向对象的好处,一些人脑中可能会冒出:封装继承多态封装封装:通过类,为数据和方法,提供统一的上下文但是,函数名,同样也可以提供上下文,并且可以通过一种叫柯里化的技巧,保存某些字段,从而实现类中成员变量的效果面向对象在封装中,没有体现出明显的优势 😔继承:其本质为复用,而通过函数,也可以实现复用 😔最后是多态:相同的接口,不同的行为使用方式在 Javascript 中,你同样可以将运算逻辑,存储到 map 中区别就在于:一个存储的是对象(类的实例),另一个存储的是函数。

小菜的博客 824

canoe安装完成开启之后因为VectorDeviceParams30_64.dll报错崩溃打不开...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1083

Java面向对象,你真的会用吗?(1)

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取! 对Java语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以独立存在,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。一、对象的概念Java是面向对象开发的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对

2401_83915450的博客 278

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

2024年Java最全Java面向对象,你真的会用吗?,10年Java开发经验

这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取。

2401_84558388的博客 551

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

学习Java的你,真的会面向对象编程吗?

学习Java的你,真的会面向对象编程吗?本文主要讲解什么是面向对象,以及如何在Java中实现面向对象编程,欢迎您前来学习!

Designer 小郑的技术博客 8754

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java面向对象

本文内容是根据毕晓东老师的视频教程总结而得。包括面向对象概念、类与对象的关系、封装、构造函数、this关键字、static关键字、单例设计模式、继承、多态、内部类、异常、包等java基础知识。 1、面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能、行为 面向对象:将功能封装进对象,强调具备了功能的对象 面向对象是基于面向过程的 面向过程例子: ...

黎小小的博客 4万+

Java——面向对象

Java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。 面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。Java中有很多对象来自标准库,还有一部分由自己定义。从根本上说只要对象能够满足要求,就不必关心其功能的具体实现过程。在OOP中不必关心对象的具体实现,只要其能够满足用户的需求即可。

lqt214133的博客 9280

Java面向对象

Java面向对象1.Java面向对象是什么2.面向过程和面向对象的优缺点1.面向过程的优缺点:2.面向对象的优缺点:3.面向对象三大特性五大原则1.三大特性:2.五大原则:总结: 1.Java面向对象是什么 OOP(面向对象编程)、OOD(面向对象设计)、OOA(面向对象的分析) Object Oriented Programming     &nb...

逆水行舟,不进则退 5657

Java面向对象专题

Java面向对象专题解读

从知识输入到知识输出 4265

四、Java面向对象设计:你真的懂面向对象吗?

面向对象编程不仅仅是使用class和new,而是通过封装、继承、多态和抽象四大特性,构建可维护、可扩展的代码体系。

weixin_45734874的博客 888

对Java面向对象的理解

Java的面向对象的理解 1.思想简述: 面向对象是一种思想。它将数据和操作数据的方法封装在对象中,从而使对象有了一些功能,也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想将数据和操作数据的方法交给对象去管理,当我们需要某些功能的时候,只要找到能够实现该功能的对象然后让他去做就好了...

ww的博客 6033

Java什么叫面向对象

    什么是面向对象呢?这个问题真的是老生常谈,面试的时候经常问。到底什么是面向对象。。。我也不知道啊     看看百度一下的结果吧: 世界上有loli控,御姐控,女王控,所以有句话就叫万物皆可控面向对象也是一样,万物皆对象 对象这个词你可以理解为一个总称,比如男人女人都叫人,蜡烛皮鞭高跟鞋都是道具,所以面向对象原本的意思是“都叫对象”,翻译过来不是原汁原味了而已因此,房子是对象、飞机是对象...

萌萌的博客 1万+

真的理解面向对象思维

只是想给一些程序员说明一些简单的道理跳出编程最近帮着负责公司的面试,招聘岗位是JAVA应用开发,可能是因为公司性质原因,无法找到好的毕业生源,但在沟通中越发的发现一个问题,那就是对于混口饭吃和做好一件事儿,差距是很大的。至少从简历上可以看出来,凡是写上SpingMVC和Struts之类框架的人,都是走进实现逻辑,压根没有跳出来思考。 我最喜欢提的问题是随意交叉对比“C、C++、JAVA、PYTHO

Kanon的博客 1723

你真的会用extends吗?

通过对比Dart和Vue中的extends、mixin、implement,加深对继承和组合的理解

小易不止于搬砖的博客 1124

Java——Java面向对象

Java是面向对象的程序设计语言,Java语言提供了定义类、成员变量、方法等最基本的功能。类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,Java程序使用类的构造器来创建该类的对象。继承是面向对象的三大特征之一,也是实现软件复用的重要手段。Java的继承具有单继承的特点,每个子类只有一个直接父类。

qq_16027093的博客 2528
上一篇: 【数据结构与算法 10】算法的时间复杂度和空间复杂度
下一篇: Spring面试题整理
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2953原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值