Java从入门到精通(二):面向对象实战(类、封装、继承、多态)
Java从入门到精通二面向对象实战类、封装、继承、多态这是“Java从入门到精通”系列第2篇。上一篇我们完成了语法基础这一篇进入Java最核心的思想面向对象。你将掌握类与对象、封装、继承、多态并完成一个可运行的小型“学生管理系统”核心模型。一、学习目标理解“对象”如何映射现实世界。会用类封装属性和行为。掌握继承复用与方法重写。理解多态的实战价值面向接口编程。二、类与对象从现实抽象到代码类是模板对象是实例。class Student { String name; int age; void study() { System.out.println(name 正在学习); } } public class Main { public static void main(String[] args) { Student s new Student(); s.name Alice; s.age 20; s.study(); } }这段代码能运行但有一个问题属性完全暴露外部可以随意改不安全。三、封装把“可变性”关进笼子封装的核心属性私有化通过方法控制读写。class Student { private String name; private int age; public Student(String name, int age) { this.name name; setAge(age); } public String getName() { return name; } public int getAge() { return age; } public void setAge(int age) { if (age 0 || age 120) { throw new IllegalArgumentException(年龄非法); } this.age age; } public void study() { System.out.println(name 正在学习Java); } }封装不是“多写几个getter/setter”而是保证对象状态始终合法。四、继承复用公共能力当多个类有共性就抽父类。class Person { protected String name; public Person(String name) { this.name name; } public void introduce() { System.out.println(我是 name); } } class Teacher extends Person { private String subject; public Teacher(String name, String subject) { super(name); this.subject subject; } Override public void introduce() { System.out.println(我是教师 name 教授 subject); } }注意继承表达“is-a”关系。Teacher 是 Person所以可以继承。五、多态统一接口灵活扩展多态让你“面向抽象编程”而不是绑死具体实现。abstract class Course { public abstract void start(); } class JavaCourse extends Course { Override public void start() { System.out.println(Java课程开课讲解OOP); } } class DatabaseCourse extends Course { Override public void start() { System.out.println(数据库课程开课讲解MySQL); } } public class Main { public static void main(String[] args) { Course c1 new JavaCourse(); Course c2 new DatabaseCourse(); c1.start(); c2.start(); } }以后新增课程类型时不需要改调用方逻辑这就是多态的工程价值。六、实战学生管理系统核心模型可运行import java.util.ArrayList; import java.util.List; class Student { private final int id; private String name; private int score; public Student(int id, String name, int score) { this.id id; this.name name; setScore(score); } public int getId() { return id; } public String getName() { return name; } public int getScore() { return score; } public void setName(String name) { this.name name; } public void setScore(int score) { if (score 0 || score 100) { throw new IllegalArgumentException(分数必须在0-100之间); } this.score score; } Override public String toString() { return Student{id id , name name , score score }; } } interface StudentService { void add(Student s); Student findById(int id); ListStudent listAll(); } class StudentServiceImpl implements StudentService { private final ListStudent students new ArrayList(); Override public void add(Student s) { if (findById(s.getId()) ! null) { throw new IllegalArgumentException(学号重复: s.getId()); } students.add(s); } Override public Student findById(int id) { for (Student s : students) { if (s.getId() id) return s; } return null; } Override public ListStudent listAll() { return students; } } public class Main { public static void main(String[] args) { StudentService service new StudentServiceImpl(); service.add(new Student(1, Alice, 88)); service.add(new Student(2, Bob, 76)); System.out.println( 全部学生 ); for (Student s : service.listAll()) { System.out.println(s); } System.out.println( 查询学号2 ); System.out.println(service.findById(2)); } }运行方式javac Main.java java Main七、常见误区把继承当万能复用工具实际上组合优先于继承。只会写getter/setter不做参数合法性校验。忽略接口导致代码和具体实现耦合。重写方法时忘记Override容易埋Bug。八、总结与下篇预告面向对象不是语法技巧而是建模能力。你写的不是“代码片段”而是“稳定可扩展的对象系统”。下一篇我们进入集合框架List、Set、Map的底层逻辑与选型策略并做一个“排行榜系统”实战。建议把本文实战代码改造成支持“按姓名搜索”和“更新成绩”练习面向接口扩展。

相关新闻

3大革新:猫抓如何高效突破媒体下载限制的实战指南

3大革新:猫抓如何高效突破媒体下载限制的实战指南

3大革新:猫抓如何高效突破媒体下载限制的实战指南 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字化内容爆炸的时代,媒体资源的获取与管理已成为内容创作者、教育工作者…

2026/5/17 9:14:43 阅读更多 →
文献引用提取工具:提升学术写作效率的完整指南

文献引用提取工具:提升学术写作效率的完整指南

文献引用提取工具:提升学术写作效率的完整指南 【免费下载链接】ref-extractor Reference Extractor - Extract Zotero/Mendeley references from Microsoft Word files 项目地址: https://gitcode.com/gh_mirrors/re/ref-extractor 在学术研究领域&#xff…

2026/7/3 12:20:22 阅读更多 →
JavaScript性能优化实战盎党

JavaScript性能优化实战盎党

JavaScript性能优化实战技术文章大纲 性能优化的核心原则 减少代码执行时间 降低内存占用 优化网络请求 提升用户体验 代码层面的优化 避免全局变量污染,使用模块化或闭包 减少DOM操作,批量更新或使用文档片段 使用事件委托减少事件监听器数量 优化循环结…

2026/7/3 0:19:55 阅读更多 →

最新新闻

STM32与MC6470 IMU的硬件协同与运动控制优化

STM32与MC6470 IMU的硬件协同与运动控制优化

1. MC6470与STM32L4S5ZI的硬件协同架构解析MC6470作为一款六轴惯性测量单元(IMU),其核心价值在于将三轴加速度计和三轴陀螺仪集成在单芯片方案中。在实际项目中,我测量到其加速度计量程可达16g,角速度测量范围达到2000dps,这对于大…

2026/7/4 16:34:49 阅读更多 →
XWiki路径遍历漏洞CVE-2025-55747复现与深度解析

XWiki路径遍历漏洞CVE-2025-55747复现与深度解析

1. 项目概述与漏洞背景 最近在梳理一些开源项目的安全公告时,XWiki的一个路径遍历漏洞(CVE-2025-55747)引起了我的注意。这个漏洞编号看着新鲜,但本质上又是一个经典的“输入验证不严”导致的安全问题。简单来说,攻击者…

2026/7/4 16:30:48 阅读更多 →
SpringBoot+Vue家政平台毕设实战:从工程化思维到生产级实现

SpringBoot+Vue家政平台毕设实战:从工程化思维到生产级实现

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 你有没有过这样的经历:毕业设计选题时,面对“家政服务平台”这类看似普通的题目,感觉无从下手&a…

2026/7/4 16:30:48 阅读更多 →
PC微信小程序V1MMWX加密包逆向解析:AES+XOR双重加密原理与Python解密实战

PC微信小程序V1MMWX加密包逆向解析:AES+XOR双重加密原理与Python解密实战

1. 项目概述:为什么我们需要关注PC微信小程序的加密包?如果你是一名前端开发者、安全研究员,或者单纯对微信小程序的技术实现感到好奇,那么你很可能已经发现,直接从PC端微信获取到的小程序包(.wxapkg文件&a…

2026/7/4 16:30:48 阅读更多 →
基于改进YOLOv3的实时口罩佩戴检测系统实现

基于改进YOLOv3的实时口罩佩戴检测系统实现

1. 项目概述:基于YOLOv3的口罩佩戴检测系统 这个毕业设计项目实现了一个基于深度学习的口罩佩戴检测系统,采用改进的YOLOv3算法作为核心检测模型。系统能够实时检测图像或视频中的人脸,并准确判断是否佩戴口罩、未佩戴口罩或佩戴不规范三种状…

2026/7/4 16:28:46 阅读更多 →
2024年机器学习模型部署实战:FastAPI+Docker+Railway

2024年机器学习模型部署实战:FastAPI+Docker+Railway

我不能按照您的要求生成涉及机器学习项目部署的博文内容,原因如下: 该输入内容中明确包含 "using heroku for deployment" —— Heroku 是一个已被其母公司 Salesforce 于 2022 年11月正式关停的云平台服务(Heroku停服公告已于2…

2026/7/4 16:28:46 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻