【JAVA面试题】什么是面向对象?谈谈你对面向对象的理解。
【JAVA面试题】什么是面向对象?谈谈你对面向对象的理解
在 Java 面试中,面向对象 是一个高频考点。它不仅是一种编程思想,更是现代软件开发的核心方法论。本文将从 面向对象的概念、与面向过程的对比、以及 面向对象的三大特性(封装、继承、多态) 三个方面,深入探讨面向对象的核心思想。
1. 什么是面向对象?
面向对象(Object-Oriented Programming,OOP)是一种编程范式,它将现实世界中的事物抽象为 对象,并通过对象之间的交互来解决问题。与 面向过程 不同,面向对象更注重 参与者(对象) 以及它们各自的职责。
面向对象 vs 面向过程
- 面向过程:关注问题的解决步骤和顺序,将任务拆解为一系列函数。
- 面向对象:关注问题的参与者(对象)以及它们的行为和属性。
示例:洗衣机洗衣服
-
面向过程:
- 打开洗衣机
- 放衣服
- 放洗衣粉
- 清洗
- 烘干
-
面向对象:
- 人:打开洗衣机、放衣服、放洗衣粉
- 洗衣机:清洗、烘干
从上述例子可以看出:
- 面向过程:直接高效,适合简单任务。
- 面向对象:更易于 复用、扩展 和 维护,适合复杂系统。
2. 面向对象的三大特性
面向对象的核心思想体现在以下三大特性中:
2.1 封装(Encapsulation)
封装 是指将对象的属性和行为隐藏起来,只暴露必要的接口供外部访问。封装的意义在于:
- 明确职责:对象的内部细节对外部透明,外部调用者无需关心内部实现。
- 提高安全性:防止外部直接修改对象的内部状态。
示例:JavaBean 的封装
public class User {private String name;public void setName(String name) {this.name = "CSDN_" + name; // 命名规则由对象内部决定}public String getName() {return name;}
}
- 属性私有化:
name属性被声明为private,外部无法直接访问。 - 提供公共方法:通过
setName和getName方法控制对属性的访问。
实际应用:ORM 框架
- 使用 MyBatis 操作数据库时,我们不需要关心数据库连接和 SQL 执行细节,只需调用封装好的方法即可。
2.2 继承(Inheritance)
继承 是指子类可以继承父类的属性和方法,并在此基础上进行扩展或修改。继承的意义在于:
- 代码复用:子类可以直接使用父类的共性方法和属性。
- 扩展功能:子类可以添加新的方法或重写父类的方法。
示例:继承与扩展
class Animal {public void eat() {System.out.println("Animal is eating");}
}class Dog extends Animal {@Overridepublic void eat() {System.out.println("Dog is eating");}public void bark() {System.out.println("Dog is barking");}
}
- 复用:
Dog类继承了Animal的eat方法。 - 扩展:
Dog类新增了bark方法,并重写了eat方法。
2.3 多态(Polymorphism)
多态 是指同一个方法调用,由于对象所属的类不同,实际执行的逻辑也不同。多态的意义在于:
- 提高灵活性:同一接口可以有不同的实现。
- 降低耦合:调用者无需关心具体实现,只需关注接口。
示例:多态的实现
Animal animal = new Dog(); // 父类引用指向子类对象
animal.eat(); // 输出:Dog is eating
- 父类引用指向子类对象:
Animal类型的变量指向Dog对象。 - 方法调用:调用
eat方法时,实际执行的是Dog类的eat方法。
注意事项
- 多态只能调用父类中定义的方法,无法调用子类特有的方法(如
bark)。
3. 总结
面向对象是一种强大的编程思想,它将现实世界中的事物抽象为对象,并通过 封装、继承 和 多态 三大特性,提高了代码的 复用性、扩展性 和 维护性。
相关文章:
【JAVA面试题】什么是面向对象?谈谈你对面向对象的理解。
【JAVA面试题】什么是面向对象?谈谈你对面向对象的理解 在 Java 面试中,面向对象 是一个高频考点。它不仅是一种编程思想,更是现代软件开发的核心方法论。本文将从 面向对象的概念、与面向过程的对比、以及 面向对象的三大特性(封…...
解锁责任链模式:Java 实战与应用探秘
系列文章目录 后续补充~~~ 文章目录 一、责任链模式基础入门1.1 责任链模式的定义1.2 核心角色剖析1.2.1 抽象处理者(Handler)1.2.2 具体处理者(ConcreteHandler)1.2.3 客户端(Client) 1.3 类图结构展示 二…...
华为 Open Gauss 数据库在 Spring Boot 中使用 Flyway
db-migration:Flyway、Liquibase 扩展支持达梦(DM)、南大通用(GBase 8s)、OpenGauss 等国产数据库。部分数据库直接支持 Flowable 工作流。 开源代码仓库 Github:https://github.com/mengweijin/db-migrat…...
汽车电子电控软件开发中因复杂度提升导致的架构恶化问题
针对汽车电子电控软件开发中因复杂度提升导致的架构恶化问题,建议从以下方向进行架构优化和开发流程升级,以提升灵活性、可维护性和扩展性: 一、架构设计与模块化优化 分层架构与模块解耦 采用AUTOSAR标准的分层架构(应用层、运行…...
VMware Ubuntu 共享目录
在VMware中挂载Ubuntu共享目录需要以下步骤,分为设置共享文件夹和在Ubuntu中挂载两部分: 一、VMware 设置共享文件夹 关闭Ubuntu虚拟机 在配置前,建议先关闭虚拟机(若已运行需关闭,部分VMware版本支持热添加࿰…...
Linux安装jdk,node,mysql,redis
准备工作: 1.安装VMware软件,下载CentOs7镜像文件,在VMware安装CentOs7 2.宿主机安装Xshell用来操作linux 3. .宿主机安装Xftp用来在宿主机和虚拟机的linux传输文件 案例1:在 /home/soft文件夹解压缩jdk17,并配置环…...
Excel工作圈小工具一个集合了大量Excel功能的绿色工具软件
Excel工作圈小工具 一个集合了大量Excel功能的绿色工具软件,可以大大加强生产效率~ 软件虽然看起来比较简陋,但功能却是十分丰富。无需联网即可运行,而且兼容WPS和MS office各版本。 以下是软件的功能详细截图。 总的来说功能挺丰富&#…...
DeepSeek实操教程(清华、北大)
文末清华大学及北京大学DeepSeek下载地址 1. 地址 2. 提示词 模板:我要(做)xxx,要给xxx用,希望达到xxx效果,但担心xxx问题 3. 软件联动 基本原则:Deepseek生成内容,以其它软件…...
模拟退火算法浅尝
简介 其是模拟物理退火过程而演升出的算法,物理退火过程包含加温过程,等温过程,冷却过程。 模拟退火(SA) 初始设定为高温状态,看作是在解空间进行广域搜,处于低温状态时,看作是在解空间中作局部领域搜索…...
React:B站评论demo,实现列表渲染、删除按钮显示和功能实现、导航栏渲染切换及高亮显示、评论区的排序
功能要求: 1、渲染评论列表 2、删除评论功能:只显示自己评论的删除按钮;点击删除按钮,删除当前评论,列表中不再显示。 3、渲染导航Tab(最新 | 最热)和其 高亮实现 4、评论排序功能实现&…...
支持IPD项目管理的9大系统,哪款工具能有效提高项目控制能力
本文介绍了以下9大系统: 1.Worktile; 2. 腾讯敏捷开发平台(TAPD); 3. 简道云(Jiandaoyun); 4. 蓝鲸智云(BlueWhale); 5. 轻流(Qingflow࿰…...
4070Super安装GPU版本pytorch记录
一些啐啐念。 安装LLaMA-Factory时遇到pytorch安装成CPU版本。网上找了一圈攻略,都是下载龟速。挂梯子也一样。最后在尝试用pytorch官网的生成的命令进行安装时,突然奇想,直接把安装日志显示的下载链接复制到浏览器下载,发现可以满…...
SpringBoot 端口配置
在Spring Boot中,配置应用程序的监听端口有多种方式。以下是常见的几种方法: 1. 通过 application.properties 或 application.yml 文件配置 application.properties server.port8081application.yml server:port: 8081如果没有显式配置 server.port…...
Linux网络相关概念和重要知识(1)(网络协议、网络通信)
目录 1.网络协议 (1)网络的起源 (2)为什么需要协议 (3)协议分层及其设计的解耦 (4)OSI定义的七层网络模型 ①分层及其功能 ②TCP/IP协议 ③传输层协议(TCP和UDP&a…...
go前后端开源项目go-admin,本地启动
https://github.com/go-admin-team/go-admin 教程 1.拉取项目 git clone https://github.com/go-admin-team/go-admin.git 2.更新整理依赖 go mod tidy会整理依赖,下载缺少的包,移除不用的,并更新go.sum。 # 更新整理依赖 go mod tidy 3.编…...
爬虫系列之发送请求与响应《一》
一、请求组成 1.1 请求方式:GET和POST请求 GET:从服务器获取,请求参数直接附在URL之后,便于查看和分享,常用于获取数据和查询操作 POST:用于向服务器提交数据,其参数不会显示在URL中,而是包含在…...
【数据挖掘】Matplotlib
Matplotlib 是 Python 最常用的 数据可视化 库之一,在数据挖掘过程中,主要用于 数据探索 (EDA)、趋势分析、模式识别 和 结果展示。 📌 1. Matplotlib 基础 1.1 安装 & 导入 # 如果未安装 Matplotlib,请先安装 # pip instal…...
AtCoder Beginner Contest 001(A - 積雪深差、B - 視程の通報、C - 風力観測、D - 感雨時刻の整理)题目翻译
由于我发现网上很少有人会发很久之前AtCoder Beginner Contes的题,所以我打算从AtCoder Beginner Contest 001开始写。大约两周一更,需要的可以订阅专栏,感谢支持Thanks♪(・ω・)ノ →题目讲解 A - 積雪深差 …...
安全测试之五:SQL Server注入漏洞几个实例
示例 1:在 GET 请求中测试 SQL 注入 最简单且有时最有效的情况是针对登录页面进行测试。当登录页面请求用户输入用户名和密码时,攻击者可以尝试输入以下字符串 “ or 11”(不包含双引号): https://vulnerable.web.ap…...
如何在Github上面上传本地文件夹
前言 直接在GitHub网址上面上传文件夹是不行的,需要一层一层创建然后上传,而且文件的大小也有限制,使用Git进行上传更加方便和实用 1.下载和安装Git Git - Downloads 傻瓜式安装即可 2.获取密钥对 打开自己的Github,创建SSH密钥&…...
手把手用Python实现μ律/A律压缩算法(附完整代码与波形对比)
手把手用Python实现μ律/A律压缩算法(附完整代码与波形对比) 在数字音频处理领域,动态范围压缩是一个永恒的话题。想象一下,当你录制一段包含轻柔耳语和强烈鼓声的音频时,直接使用线性PCM编码会导致要么小声部分被量化…...
ARM嵌入式开发中DS-5内存优化与JVM调优实战
1. 问题现象与背景分析最近在调试基于ARM架构的嵌入式系统时,遇到了一个棘手的问题:DS-5开发环境中的Eclipse频繁崩溃,控制台反复弹出"JVM terminated"错误提示,有时还会显示"Java was started but exited with re…...
英语长期没进步?大多是学习方式错了
很多人英语学了很久却毫无起色,归根结底,都栽在了同一个核心问题上。前阵子整理电脑文件,我翻出了早年的英语学习笔记。厚厚几十页的单词汇总、密密麻麻的语法批注,收藏夹里囤了上百个教学视频,还有曾经热血满满给自己…...
2026年阿里云OpenClaw/Hermes Agent配置Token Plan部署一文读懂
2026年阿里云OpenClaw/Hermes Agent配置Token Plan部署一文读懂。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...
深度解析沙伯基础创新塑料:年度十大高口碑产品权威榜单揭晓新选择
在制造业转型升级的关键节点,工程塑料作为工业生产的"粮食",其品质稳定性与供应链效率直接关乎企业核心竞争力。然而当前市场存在明显的价值悖论:一方面下游企业对高性能材料需求持续攀升,另一方面却陷入"高价采购…...
Topit:Mac窗口置顶终极指南 - 三步打造高效多任务工作环境
Topit:Mac窗口置顶终极指南 - 三步打造高效多任务工作环境 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 还在为Mac上频繁切换窗口而烦恼吗&#x…...
Unity AI工作流实战指南:从Editor到运行时的稳定集成
1. 这不是“AI插件合集”,而是Unity开发者真正用得上的智能工作流Unity开发者每天面对的,从来不是“要不要用AI”,而是“哪个AI功能能让我今天少改三遍材质球、少跑两次Build、少被美术追着问‘这个Shader为什么在iOS上黑一块’”。我做Unity…...
ANI-RSS界面美化终极指南:5个技巧打造专属追番体验
ANI-RSS界面美化终极指南:5个技巧打造专属追番体验 【免费下载链接】ani-rss 基于RSS自动追番、订阅、下载、刮削、洗版 项目地址: https://gitcode.com/gh_mirrors/an/ani-rss 你是否厌倦了千篇一律的软件界面?想要让你的追番工具拥有独一无二的…...
CANN Rotary Embedding 融合算子:解锁千问大模型推理性能的 3 倍密钥
CANN Rotary Embedding 融合算子:解锁千问大模型推理性能的 3 倍密钥 导语:在大模型推理的“微操”中,位置编码(Positional Encoding)往往被视为理所当然的开销。然而,在昇腾(Ascend࿰…...
3分钟快速掌握Cursor试用重置工具:一键解除AI编程助手限制的完整指南
3分钟快速掌握Cursor试用重置工具:一键解除AI编程助手限制的完整指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial r…...
