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

【Java面试必考】面向对象核心:三大特性、抽象类与接口、重写与重载详解

1. 面向对象三大特性(背诵版)

  • 封装(Encapsulation):隐藏对象的属性和实现细节,仅对外公开接口。
    • 通俗解释:就像ATM机,你只需要知道怎么插卡、输入密码、取钱(对外暴露的方法),不需要知道机器内部是怎么把钱吐出来的(内部逻辑被隐藏)。
    • 面试考点:提高代码安全性、复用性和高内聚低耦合。
  • 继承(Inheritance):子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法。
    • 通俗解释:就像子承父业,儿子继承了父亲的财产和手艺,还可以自己再学一门新手艺(扩展自己的方法)。
    • 重点:Java是单继承,多实现。继承破坏了封装性(子类可以看到父类细节)。
  • 多态(Polymorphism):同一个行为具有多个不同表现形式或形态的能力。
    • 通俗解释:老板喊一句“开始干活”,程序员开始敲代码,保洁阿姨开始扫地,财务开始算账。同一个指令,不同对象执行效果不同
    • 三个必要条件:继承、重写、父类引用指向子类对象(Animal a = new Dog();)。

2. 抽象类 vs 接口(高频易混淆)

比较维度抽象类 (abstract class)接口 (interface)
本质认知表示这个对象**“是什么”**(is-a)表示这个对象**“能做什么”**(has-a/行为规范)
继承关系单继承多实现(一个类可以实现多个接口)
成员变量可以有各种类型的变量只能是public static final的常量
方法实现可以有普通方法和抽象方法Java 8以后可有defaultstatic方法实现
构造函数有构造函数(供子类调用)没有构造函数
  • 通俗场景
    • (抽象类):有开/关的属性和基本动作。木门、铁门继承它。
    • 报警器(接口):定义了报警的行为。如果你想做一扇“报警门”,就继承“门”这个抽象类,并实现“报警器”这个接口。

3. 重载(Overload) vs 重写(Override)

  • 重载(Overload) - 编译时多态
    • 定义:同一个类中,方法名相同,参数列表不同(类型、个数、顺序不同)。
    • 通俗解释:同一个小明,你给他10块钱他给你买瓶水(参数是10),你给他100块钱他给你买包烟(参数是100)。根据你给的“参数”不同,他做的事情不同。
    • 注意:返回值类型不同不能作为重载的依据。
  • 重写(Override) - 运行时多态
    • 定义:子类重新实现父类中非 private 的方法,方法名、参数列表必须完全相同。
    • 通俗解释:父亲有个方法叫“开车”,开的是桑塔纳;儿子重写了这个方法,开的是保时捷。
    • 原则(“两同两小一大”):方法名参数相同;子类抛出的异常、返回值类型要比父类更小或相等;子类方法访问权限要比父类更大或相等。
http://www.jsqmd.com/news/503784/

相关文章:

  • 影刀RPA实战:Python变量操作5大高效技巧(附代码示例)
  • 消融协议壁垒:基于GB28181/RTSP融合网关的多品牌设备统一接入与边缘推流架构
  • 提速百倍!PySCENIC单细胞转录因子预测实战指南
  • 无成本破局:企业办公网OpenClaw隐蔽安装排查与长效防御指南
  • EKS GPU 服务部署实战指南
  • DVWA文件包含漏洞实战:从allow_url_include配置到GetShell全流程解析
  • 从零到一:基于立创EDA的STM32F103C8T6最小系统PCB实战设计
  • Qwen3.5-9B效果实测:对微信小程序界面截图生成可运行的Taro代码框架
  • Z-Image-Turbo-rinaiqiao-huiyewunv部署教程:辉夜大小姐专属二次元绘图镜像一键启动
  • Bolt.diy实战:5分钟用语音输入+GitHub同步,打造你的AI全栈工作流
  • Citra模拟器性能优化指南:从卡顿到流畅的全方位解决方案
  • Qwen3-VL-WEBUI场景应用:从设计稿一键生成可运行网页
  • MCP协议实战:让API文档自动生成业务代码,开发效率显著提升
  • 基于多粒度特征融合与Swin-Transformer的细粒度图像分类实战
  • Seata 2.0.0 数据库模式配置全解析:MySQL 存储实战教程
  • ZeroMQ传输协议对比:inproc vs TCP vs IPC,选哪个更合适你的场景?
  • 计算机毕业设计springboot基于的企业采购系统设计与实现 SpringBoot框架下的企业物资采购管理平台研发 基于Java技术的企业供应链采购系统构建与实践
  • 不止是XML:用Rimworld的Defs文件,像搭积木一样设计你的第一个自定义武器
  • 服饰解构新范式:Nano-Banana软萌拆拆屋开源模型效果展示
  • Turbo Intruder:重新定义高性能HTTP安全测试的技术范式
  • 根据所提供的文字范围,一个合适的标题可以是:“MATLAB仿真:复现耗散孤子共振DSR及金兹堡...
  • Ubuntu桌面系统爆致命漏洞(CVE-2026-3888):普通用户可直接获取root权限,亿级设备面临风险
  • 职场人必备:用Microsoft Project高效管理项目进度(附甘特图实战教程)
  • JupyterNotebook实战:5个提升数据分析效率的隐藏技巧(附代码示例)
  • 昇腾 910B 多机部署 DeepSeek-V3/R1 671B 满血版:从零到一的实战避坑指南
  • Face3D.ai Pro进阶技巧:如何获得更逼真的皮肤纹理细节
  • 【Java面试必考】集合框架全解析:HashMap底层图解、线程安全与性能选型
  • 老项目需求开发效率翻倍:AI编程实战指南
  • SLAM新手必看:如何用II-NVM的LRU缓存策略提升三维重建效率(附实测数据)
  • 大模型安全避坑指南:5个容易被忽视的后门攻击风险点(含防御配置模板)