八股文-面向对象的理解

近年来,IT行业的环境相较以往显得有些严峻,因此一直以来,我都怀有一个愿望,希望能够创建一个分享面试经验的网站。由于个人有些懒惰,也较为喜欢玩乐,导致计划迟迟未能实现。然而,随着年底的临近,考虑到当前环境下许多开发者可能面临裁员等问题,我决定加速建设这个面试经验分享网站,以便为大家提供学习的平台,共同面对职场的挑战。

当然,我们建设这个网站的目标并非仅仅是为了背诵一些标准答案,而是以面试八股文为切入点,拓展我们的知识广度,构建起一个独特的知识体系。通过这个过程,我们希望能够在职业发展的道路上更为深入地理解行业趋势,形成自己独到的见解,在内卷的道路上越走越卷。

网站地址:http://blog.xiuji.mynatapp.cc/

那么作为一名java开发者,我们还是以面向对象来开启我们的知识分享吧。

oop.jpg

面向对象的理解

面向对象编程(Object-Oriented Programming,OOP)是一种程序设计方法,其核心思想是将问题抽象为由若干个对象,通过这些对象之间的调用、配合及协调,共同完成当前的问题。

面向对象的三大基本特征:封装、继承和多态。

面向对象的五大基本原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖反转原则。

面向对象的三大基本特性

面向对象编程(Object-Oriented Programming,OOP)有三大基本特征,它们是封装(Encapsulation)、继承(Inheritance)、和多态(Polymorphism);

-2023-11-04-2144.png

  • 封装

封装是面向对象编程的基本原则之一,它指的是将数据和操作数据的方法封装在一个单元内,即一个类中。封装通过访问控制修饰符(如private、protected、public)来限制对类的成员的访问。这种封装性能够隐藏对象的内部实现细节,只暴露必要的接口,提高了代码的安全性和可维护性。

  • 继承

继承是一种机制,允许一个类(子类)基于另一个类(父类)的定义来构建。子类继承了父类的属性和方法,同时可以通过扩展或修改来增加或改变其行为。继承促进了代码的重用,通过建立类的层次结构,提高了代码的可维护性和扩展性。

  • 多态

多态性是指同一个方法在不同的对象上产生不同的行为。在面向对象编程中,多态性有两种主要形式:编译时多态(静态多态)和运行时多态(动态多态)。

编译时多态: 通过方法的重载实现,同一个类中的多个方法拥有相同的名称但不同的参数列表。

运行时多态: 通过方法的覆盖实现,子类可以提供对父类方法的不同实现。

这三大特征共同构成了面向对象编程的基本框架,使得代码更易理解、扩展和维护。

面向对象的五大基本原则

面向对象编程(Object-Oriented Programming,OOP)有五大基本原则,通常被称为SOLID原则;

-2023-11-04-2145.png

  • 单一职责原则(Single Responsibility Principle,SRP)

一个类应该只有一个引起变化的原因,即一个类应该只负责一项工作。这意味着一个类应该只有一个责任,如果一个类有多个责任,那么在需求变化时可能需要修改多个地方,导致系统更加脆弱。

  • 开放封闭原则(Open/Closed Principle,OCP)

软件实体(类、模块、函数等)应该对扩展是开放的,但对修改是封闭的。这意味着当需要添加新功能时,应该通过扩展现有代码而不是修改已有代码。

  • 里氏替换原则(Liskov Substitution Principle,LSP)

子类型必须能够替换掉它们的基类型,而程序仍然能够工作。这意味着派生类必须能够替代其基类,而不引起任何错误或异常。

  • 接口隔离原则(Interface Segregation Principle,ISP)

一个类不应该强迫客户端(调用它的类)依赖它们不使用的方法。接口应该小而专一,而不是大而全,这有助于减少对无关方法的依赖。

  • 依赖反转原则(Dependency Inversion Principle,DIP)

高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象。抽象不应该依赖于具体,具体应该依赖于抽象。这鼓励使用接口和抽象类来实现松耦合,降低模块之间的依赖性。

这五大原则共同构成了一个强大的设计理念,帮助开发者编写可维护、可扩展、灵活的面向对象代码。在实际开发中,遵循这些原则有助于构建更加健壮、可靠的软件系统。

总结

Java的面向对象编程提供了强大而灵活的设计思想,使得开发者可以更好地组织和设计代码。理解这些核心概念,并能够正确地应用于实际项目中,是成为一名熟练Java开发者(职业码农)的关键。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

绿茵场上洒汗水,激情飞扬现活力——碧桂园社区足球课堂开课啦

“伙伴计划”是由共青团中央发起实施,中央专项彩票公益金提供支持,面向社区青少年开展的一项示范性服务项目。实施这个项目的主要目的是针对青少年在成长过程中遇到的实际困难和普遍性需求,开展“团团活力圈”青少年身心健康提升服务&#xf…

JUC“阻塞队列”水很深,你把握不住!

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 提到阻塞队列&#xff…

手把手教你实现贪吃蛇

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:实现贪吃蛇 > 毒鸡汤:时间并不可真…

前端JS解构数组对象

// 3. 对象数组解构const arr [{username: 小明,age: 18,agw:19},{username: 小ha,age: 18,agw:19}]arr.map(item>item.age)//js结构数组对象console.log( arr.map(item>{return {aaa:item.age,bbb:item.username}}))

zabbix的agent的安装部署

zabbix的agent的部署 主机ipagent-1192.168.10.129 zabbix官网部署教程 但是不全,建议搭配这篇文章一起看 下面有教程 zabbix服务端配置 修改主机名 hostnamectl set-hostname agent-1 exit配置zabbix的yum源 [rootagent-1 ~]# rpm -Uvh https://repo.zabbix…

193. 二叉搜索树的最小公共祖先

题目 题解 递归 def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:if root.val < p.val and root.val < q.val:return self.lowestCommonAncestor(root.right, p, q)if root.val > p.val and root.val > q.val:return …

C# - System.Action

.net 内置的一种委托 using System; private Action m_Action; m_Action Func1; m_Action Func1; m_Action Func2;m_Action?.invoke()//获取委托中的Action列表 var actionList m_Action.getInvocationList();//委托中是否存在指定的Action var isExit Array.IndexOf(act…

智能电网线路阻抗模拟的工作原理

智能电网线路阻抗模拟是一种通过模拟电网线路的阻抗特性来实现电网故障检测和定位的技术。智能电网系统通过安装在电网线路上的传感器&#xff0c;实时采集线路上的电流、电压等参数&#xff0c;并将这些数据传输到监控中心。监控中心接收到传感器采集的数据后&#xff0c;对数…

nodejs常见知识点

文章目录 Http和Https的区别HTTP与TCP的关系-TCP的三次握手四次挥手接口请求方式HTTP状态码及其含义为什么JavaScript是单线程同步和异步任务什么是事件循环内存泄漏ajax原理和XmlHttpRequest对象简述JWT鉴权的原理一个tcp接连能发几个httpNodeJs中间件原理Express如何使用中间…

Elasticsearch 之聚合分析

本文主要介绍 Elasticsearch 的聚合功能&#xff0c;介绍什么是 Bucket 和 Metric 聚合&#xff0c;以及如何实现嵌套的聚合。 首先来看下聚合&#xff08;Aggregation&#xff09;&#xff1a; 1 什么是 Aggregation&#xff1f; 首先举一个生活中的例子&#xff0c;这个是京…

haproxy端口耗尽no free ports

用haproxy配置负载均衡时出现端口不足错误&#xff1b;后端服务连接一会高一会儿低&#xff0c;从0到1w、2w跳变&#xff1b;实际连接数为4w左右&#xff1b; haproxy[8765]: Connect() failed for backend 09e581: no free ports. 问题描述 在请求很少的时候&#xff0c;工作…

搜维尔科技:【软件篇】TechViz是一款专为工程设计的专业级3D可视化软件

在沉浸式房间内深入研究您自己的 3D 数据 沉浸式房间是一个交互式虚拟现实空间&#xff0c;其中每个表面&#xff08;墙壁、地板和天花板&#xff09;都充当投影屏幕&#xff0c;创造高度沉浸式的体验。这就像您的 3D 模型有一个窗口&#xff0c;您可以在其中从不同角度走动、…

sMLP:稀疏全mlp进行高效语言建模

这是一篇2022由纽约州立大学布法罗分校和Meta AI发布的论文&#xff0c;它主要的观点如下&#xff1a; 具有专家混合(MoEs)的稀疏激活mlp在保持计算常数的同时显着提高了模型容量和表达能力。此外gMLP表明&#xff0c;所有mlp都可以在语言建模方面与transformer相匹配&#xf…

【Proteus仿真】【Arduino单片机】DHT11温湿度

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DHT11温湿度传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示传感器采集温度和湿度。 二、软件设…

新版软考高项试题分析精选(三)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1、项目整体管理要综合考虑项目各个相关过程&#xff0c;围绕整体管理特点&#xff0c;以下说法中&#xff0c;&#xff08; &#xff09;是不正确的。 A.项目的…

运动型蓝牙耳机什么牌子好?市面上热门的运动耳机推荐

​随着生活节奏的加快&#xff0c;越来越多的人开始关注健康和运动。而在运动的时候&#xff0c;佩戴耳机听音乐已经成为了很多人的选择。但是&#xff0c;市面上的运动耳机种类繁多&#xff0c;如何选择一款适合自己的呢&#xff1f;下面&#xff0c;我推荐几款市面上热门的运…

MySQL运算符

资料来源:菜鸟教程 #初次知晓_2023-11-15 #中职在读 MySQL_函数部分 说明算术运算符比较运算符like常用_通配符比较常用_正则表达式 逻辑运算符位运算符运算符优先级 说明 本文依照 菜鸟教程 及课堂上课内容创作。 作者水平有限&#xff0c;如有错误请提出 若本文侵权请联系我…

ceph 14.2.10 aarch64 非集群内 客户端 挂载块设备

集群上的机器测试 706 ceph pool create block-pool 64 64 707 ceph osd pool create block-pool 64 64 708 ceph osd pool application enable block-pool rbd 709 rbd create vdisk1 --size 4G --pool block-pool --image-format 2 --image-feature layering 7…

【vue+amap】高德地图绘制多边形区域

参考文档&#xff1a; 高德地图参考手册 高德地图示例代码 1、高德地图控制台创建应用&#xff0c;获取权限ak 高德地图控制台 Ps.本项目里按钮等基础控件使用的是element-ui版本控件 2、项目内全局引入 index.html内引入高德地图代码&#xff1a; <script type"te…

跟着基金买,别墅靠大海?买基金重仓股票,会破产吗?| 附最新选股结果

2020年A股经历了一波结构性牛市。 抱团核心资产的公募基金历史性大赚2万亿&#xff0c;一跃成为全市场顶流。不仅常年霸榜热搜&#xff0c;甚至连游戏直播的弹幕都在讨论基金。 很多年轻人也纷纷跑步入场&#xff0c;毕竟支付宝买基金贼方便。 可惜好景不长&#xff0c;大盘急…