发布时间:2026/6/19 13:58:51
Java 面向对象高级(一)超详细整理,从入门到精通
本篇承接面向对象基础内容讲解继承、Object 类、final 关键字、抽象类四大核心知识点配套语法规则、代码案例、内存解析、易错点与实战练习适合零基础学习、课后复习以及面试备考。一、继承继承是面向对象三大核心特征之一也是实现代码复用的核心手段。通过继承可以让类与类建立父子关系子类能够直接使用父类中非私有成员减少重复代码。1.1 继承概述1.1.1 核心概念继承使用extends关键字让两个类形成 ** 父类基类 / 超类和子类派生类关系子类可以直接复用父类的非私有属性和行为。当多个类存在大量共性内容且满足is-a是一个** 逻辑关系时就适合使用继承抽取共性到父类优化代码结构。1.1.2 使用场景举例合理场景学生、老师都属于 “人”都拥有姓名、年龄抽取共性定义Person父类学生、老师作为子类继承不合理场景程序员和商品都存在编号二者不存在is-a关系不建议强行继承。1.1.3 继承语法格式public class 子类名 extends 父类名 { // 子类独有成员 }示例// 父类员工 public class Employee { String name; int age; double salary; } // 子类程序员继承员工类 public class Coder extends Employee { } // 子类人事继承员工类 public class Hr extends Employee { }1.2 继承中成员变量访问规则就近原则子类、父存在重名成员变量时优先在当前类查找关键字super主动访问父类的成员变量格式super.变量名关键字this访问当前子类的成员变量格式this.变量名。完整演示案例public class Fu { int num 10; // 父类变量 } public class Zi extends Fu { int num 20; // 子类变量 public void method() { int num 30; // 局部变量 System.out.println(num); // 30 局部变量就近 System.out.println(this.num); // 20 本类成员变量 System.out.println(super.num);// 10 父类成员变量 } } public class Test { public static void main(String[] args) { Zi z new Zi(); z.method(); } }1.3 方法重写Override1.3.1 概念子类继承父类后对父类原有方法的逻辑进行修改、增强这个过程叫做方法重写 / 覆盖。1.3.2 重写语法要求方法名、参数列表、返回值必须和父类完全一致访问权限子类权限必须大于等于父类父类private私有方法子类无法重写。1.3.3 权限修饰符优先级由低到高private 默认权限 protectedpublic1.3.4 重写代码示例// 父类 public class Fu { public void method() { System.out.println(父类原有方法逻辑); } } // 子类重写方法 public class Zi extends Fu { Override // 重写注解校验语法合法性 public void method() { System.out.println(子类重写后的方法逻辑); } }1.4 Java 继承语法特点只支持单继承一个子类只能有一个直接父类不支持多继承原因若一个类同时继承多个父多个父存在同名方法时编译器无法区分调用逻辑。支持多层继承A 继承 B、B 继承 C形成继承链子类可以逐级复用上级父类成员。1.5 继承中的构造方法1.5.1 核心规则构造方法不能被继承子类必须手动定义自身构造子类所有构造方法中默认第一行隐藏super()作用是调用父类无参构造super()必须放在构造方法第一行且this()和super()不能同时存在。1.5.2 执行流程创建子类对象时先初始化父类空间 → 再初始化子类空间。1.5.3 综合案例学生 人员继承// 父类人类 public class Person { private String name; private int age; // 有参构造 public Person(String name, int age) { this.name name; this.age age; } // get/set方法 public String getName() { return name; } public int getAge() { return age; } } // 子类学生继承人类 public class Student extends Person { private int score; // 子类独有成绩 // 子类构造通过super调用父类有参构造 public Student(String name, int age, int score) { super(name, age); this.score score; } public int getScore() { return score; } } // 测试类 public class Test { public static void main(String[] args) { Student stu new Student(钢门吹雪, 23, 100); System.out.println(stu.getName() stu.getAge() stu.getScore()); } }1.6 this 与 super 完整对照表关键字访问成员变量访问成员方法访问构造方法thisthis.变量名访问本类this.方法名()访问本类this(参数)调用本类构造supersuper.变量名访问父类super.方法名()访问父类super(参数)调用父类构造补充this()和super()都要求写在构造方法第一行因此二者不能同时使用。1.7 实战综合案例员工体系需求定义父类Employee员工子类Coder程序员、Manager项目经理继承并重写工作方法。// 父类 员工 public class Employee { private String name; private int age; private double salary; public Employee(){} public Employee(String name, int age, double salary) { this.name name; this.age age; this.salary salary; } public void work() { System.out.println(员工开始工作); } // get/set public String getName() { return name; } public int getAge() { return age; } public double getSalary() { return salary; } } // 子类 程序员 public class Coder extends Employee { public Coder(String name, int age, double salary) { super(name, age, salary); } Override public void work() { System.out.println(getName() 正在编写代码); } } // 子类 项目经理 public class Manager extends Employee { private double bonus; // 独有奖金 public Manager(String name, int age, double salary, double bonus) { super(name, age, salary); this.bonus bonus; } Override public void work() { System.out.println(getName() 正在分配任务); } } // 测试 public class TestEmp { public static void main(String[] args) { Coder c new Coder(张三,23,15000); c.work(); Manager m new Manager(李四,24,18000,5000); m.work(); } }小结继承使用extends核心作用是复用代码满足is-a关系再使用重名变量遵循就近原则this访问本类、super访问父类方法重写要求声明一致、权限不缩小私有方法不能重写Java 单继承、多层继承子类构造默认调用父构造super必须在首行。二、Object 类2.1 类层级关系Object是 Java 中所有类的根父类所有类都会直接或间接继承它因此Object中的方法所有类都可以使用。2.2 toString () 方法2.2.1 默认效果默认toString()会返回类全限定名内存哈希地址直接打印对象默认调用该方法地址信息无实际业务意义。2.2.2 重写目的重写toString()让输出结果展示对象内部属性数据方便查看对象信息。2.2.3 代码示例// 自定义类默认继承Object public class Person { private String name; private int age; public Person(String name, int age) { this.name name; this.age age; } // 重写toString方法 Override public String toString() { return 姓名 name 年龄 age; } } public class Test { public static void main(String[] args) { Person p new 李四,22); // 自动调用重写后的toString System.out.println(p); } }小结Object是所有类的父类开发中必须重写 toString ()用于打印对象真实属性而非内存地址。三、final 关键字final译为 “最终、不可改变”可以修饰类、方法、变量被修饰的内容都具备不可修改的特性。3.1 final 修饰类规则被final修饰的类为最终类不能被继承示例public final class FinalDemo {}3.2 final 修饰方法规则被final修饰的方法为最终方法无法被重写应用核心通用方法禁止子类修改逻辑时使用。3.3 final 修饰变量变量分为基本类型、引用类型规则不同基本数据类型变量值一旦赋值无法修改等同于常量引用数据类型对象地址不可修改但对象内部的成员变量依然可以修改成员变量使用final必须在定义处 或 构造方法中完成赋值。代码示例// final修饰基本类型变量 final int NUM 10; // NUM 20; 报错值不可修改 // final修饰引用类型 final Person p new Person(王五,25); p.setName(赵六); // 内部属性可修改 // p new Person(赵六,26); 报错地址不可修改小结final 类禁止继承final 方法禁止重写final 变量基本类型值不变引用类型地址不变。四、抽象类abstract4.1 抽象类与抽象方法概念抽象方法只有方法声明没有方法体使用abstract修饰。当抽取父类共性行为但无法确定具体实现逻辑时定义为抽象方法抽象类包含抽象方法的类必须使用abstract修饰是一种特殊的父类。语法格式// 抽象类 public abstract class 类名 { // 抽象方法无方法体 public abstract void 方法名(); }4.2 抽象类核心注意事项抽象类不能实例化不能 new 对象防止调用无实现的抽象方法抽象类可以拥有构造方法供子类创建对象时通过super调用抽象类中可以包含普通成员变量、普通方法抽象类的子类二选一方案一重写父类所有抽象方法常用方案二子类也定义为抽象类。4.3 关键字冲突说明abstract不能和private、final、static联用abstract private抽象方法要求子类实现私有方法子类不可见矛盾abstract final抽象要求重写final 禁止重写矛盾abstract static静态方法可通过类名直接调用无方法体的抽象静态方法无意义。4.4 模板设计模式抽象类最典型应用模板设计模式思路抽象类定义通用代码模板将不确定的逻辑抽取为抽象方法子类继承后仅需实现抽象方法整体结构由模板固定简化开发。模板模式示例// 抽象模板类 public abstract class Template { // 通用模板方法 public void run() { step1(); step2(); step3(); } public void step1(){ System.out.println(通用步骤1); } // 不确定的步骤定义为抽象方法 public abstract void step2(); public void step3(){ System.out.println(通用步骤3); } } // 子类实现抽象方法 public class SubTemplate extends Template { Override public void step2() { System.out.println(子类自定义步骤2); } }小结抽象类 / 方法使用abstract修饰抽象方法无方法体抽象类不能 new但存在构造方法子类必须重写全部抽象方法或自身也设为抽象类抽象类常用场景为模板设计模式。五、本篇全文总结继承三大特征之一extends实现单继承依靠this/super区分父子成员构造默认调用父构造方法重写需遵守权限与语法规则Object 类Java 所有类的顶层父类开发中务必重写toString()打印对象属性final 关键字修饰类禁止继承、修饰方法禁止重写、修饰变量分基本 / 引用两种规则抽象类含抽象方法不能实例化用于抽取通用模板衍生出模板设计模式牢记关键字冲突规则。以上是面向对象进阶第一部分核心内容继承、抽象类是后续接口、多态、设计模式的基础建议多写案例巩固语法与使用场景。

相关新闻

2026年AI API聚合平台选型复盘:从底层架构到商业治理的深度评测
2026/6/19 13:58:51

2026年AI API聚合平台选型复盘:从底层架构到商业治理的深度评测

站在2026年的技术节点回望,大模型应用早已脱离了早期的单体调用模式,进化到了多模态融合与多智能体(Multi-Agent)深度协作的新阶段。在这一背景下,API聚合平台的功能边界发生了质变:它不再仅仅是一个简单的…

阅读更多
如何使用Python财经数据接口库AKShare:5个实用技巧快速上手
2026/6/19 12:58:51

如何使用Python财经数据接口库AKShare:5个实用技巧快速上手

如何使用Python财经数据接口库AKShare:5个实用技巧快速上手 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/a…

阅读更多
皮肤疾病AI辅助诊断系统:轻量CNN+临床可解释性实战
2026/6/19 12:58:51

皮肤疾病AI辅助诊断系统:轻量CNN+临床可解释性实战

1. 项目概述:一个真正能落地的皮肤疾病AI辅助诊断系统我做医疗AI项目快八年了,从最早在三甲医院信息科搭图像标注平台,到后来带团队开发肺结节辅助阅片系统,再到最近两年专注皮肤科AI工具链——这条路上踩过的坑、被临床医生当面质…

阅读更多
Django毕业设计-基于 Django+Vue 的电信资费管理系统的设计与实现 基于 Django+Vue 的通信资费综合管理平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)
2026/6/19 14:58:51

Django毕业设计-基于 Django+Vue 的电信资费管理系统的设计与实现 基于 Django+Vue 的通信资费综合管理平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
为什么开发Solidity必须用solc-select?5大理由告诉你
2026/6/19 14:58:51

为什么开发Solidity必须用solc-select?5大理由告诉你

为什么开发Solidity必须用solc-select?5大理由告诉你 【免费下载链接】solc-select Manage and switch between Solidity compiler versions 项目地址: https://gitcode.com/gh_mirrors/so/solc-select solc-select 是专门为Solidity开发者设计的编译器版本管…

阅读更多
ComfyUI TTP Toolset:专业级图像分块处理与超分辨率技术完整指南
2026/6/19 14:58:51

ComfyUI TTP Toolset:专业级图像分块处理与超分辨率技术完整指南

ComfyUI TTP Toolset:专业级图像分块处理与超分辨率技术完整指南 【免费下载链接】Comfyui_TTP_Toolset for tile the image for advanced control or modification 项目地址: https://gitcode.com/gh_mirrors/co/Comfyui_TTP_Toolset 你是否曾因显存不足而…

阅读更多
FPGA_Webserver ARP协议实现:千兆速度下的地址解析协议硬件加速
2026/6/19 14:58:51

FPGA_Webserver ARP协议实现:千兆速度下的地址解析协议硬件加速

FPGA_Webserver ARP协议实现:千兆速度下的地址解析协议硬件加速 【免费下载链接】FPGA_Webserver A work-in-progress for what is to be a software-free web server for static content. 项目地址: https://gitcode.com/gh_mirrors/fp/FPGA_Webserver FPGA…

阅读更多
从攻防演练到安全加固:深入解析WiFi握手包捕获与防护策略
2026/6/19 14:58:51

从攻防演练到安全加固:深入解析WiFi握手包捕获与防护策略

1. WiFi握手包捕获的技术原理 当你用手机连接家里的WiFi时,设备会与路由器进行四次"握手"确认身份。这个过程中交换的数据包就像一份加密的合同,里面藏着WiFi密码的线索。攻击者常用的Aircrack-ng工具套装,本质上就是个"合同窃…

阅读更多
异步IO实战:异步网络请求、异步文件读写
2026/6/19 13:58:51

异步IO实战:异步网络请求、异步文件读写

博客导语学完理论必须落地实战。本文提供可直接上线的异步爬虫、异步文件读写案例,对比同步、多线程、异步性能差距,适合爬虫、后端接口、批量IO场景。一、异步网络请求(aiohttp)requests是同步阻塞,高并发爬虫必须用 …

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/17 23:21:18

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/18 4:35:02

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/18 15:04:04

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
AI率高怎么降?10款降AI率网站盘点,含免费方案
2026/6/19 0:58:49

AI率高怎么降?10款降AI率网站盘点,含免费方案

2026年毕业季临近,不少同学的论文焦虑已经从“重复率不达标”转到了“AI率超标”上:好不容易把内容改到逻辑通顺,提交检测却因为几段AI辅助生成的内容、或是表达过于规整被打回,导师要求限期整改,辛苦熬了几个通宵的成…

阅读更多
FIFA 23 Live Editor完全指南:打造你的专属足球世界
2026/6/19 0:58:49

FIFA 23 Live Editor完全指南:打造你的专属足球世界

FIFA 23 Live Editor完全指南:打造你的专属足球世界 【免费下载链接】FIFA-23-Live-Editor FIFA 23 Live Editor 项目地址: https://gitcode.com/gh_mirrors/fi/FIFA-23-Live-Editor 还在为FIFA 23中无法实现的足球梦想而烦恼吗?想要组建那支只存…

阅读更多
EasyLPAC:5个关键步骤掌握专业级eUICC智能卡管理工具
2026/6/19 0:58:49

EasyLPAC:5个关键步骤掌握专业级eUICC智能卡管理工具

EasyLPAC:5个关键步骤掌握专业级eUICC智能卡管理工具 【免费下载链接】EasyLPAC lpac GUI Frontend 项目地址: https://gitcode.com/gh_mirrors/ea/EasyLPAC EasyLPAC是一款专为eUICC智能卡管理设计的图形化界面工具,基于lpac核心构建&#xff0c…

阅读更多
GIT修改用户名
2026/6/17 19:45:33

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/18 14:35:19

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/18 15:23:49

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多