news 2026/5/8 19:24:51

第7篇:Java面向对象简介

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第7篇:Java面向对象简介

第7篇:Java面向对象简介

一、核心知识点

  • 面向对象(OOP)的核心思想:对象、类、继承、封装、多态
  • 类与对象的关系(蓝图与实例)
  • 封装的意义:隐藏实现细节,暴露公共方法
  • 继承:代码复用,extends关键字
  • 多态:父类引用指向子类对象,方法重写
  • 面向过程(POP)与面向对象(OOP)的对比

二、通俗讲解(1分钟开心学)

1. 面向过程 vs 面向对象

  • 面向过程:以“函数”为核心,数据和方法分开。就像一份菜谱:先洗菜,再切菜,再炒菜。优点是简单直接,缺点是代码难扩展。
  • 面向对象:以“对象”为核心,把数据和操作打包在一起。就像你有一个“厨师”对象,他有菜刀、锅、食材属性,也有“做菜”方法。你只管跟厨师说“做菜”,不用管内部细节。

生活类比
面向过程就像去修理店,你跟老板说:“先拿螺丝刀,拆后盖,换电池,装后盖。”(每一步都要你指挥)
面向对象就像你直接把手机给维修机器人,说:“帮我换电池。”机器人自己会拿工具、拆机、更换。你只关心结果,不关心过程。

2. 四大特征

  • 封装:把数据(属性)和行为(方法)包在一起,对外隐藏内部细节。比如汽车的油门踏板,你踩它就加速,但你不需要知道发动机怎么喷油。
  • 继承:子类继承父类的属性和方法,实现代码复用。比如“电动汽车”继承“汽车”,拥有汽车的所有功能,还可以增加充电功能。
  • 多态:同一个行为,不同对象表现出不同形态。比如“动物”都有“叫”的方法,猫叫“喵”,狗叫“汪”。
  • 抽象(常作为第四特征):只定义规范,不实现具体细节。比如“形状”有“计算面积”的方法,但不知道具体怎么算。

3. 类与对象

  • :图纸。定义了一类事物共有的属性和行为。
  • 对象:根据图纸造出来的实物。每个对象都有自己的状态(属性值)。

三、实操代码案例 + 场景说明

场景:你要开发一个学生管理系统,需要描述学生的基本信息(姓名、年龄、成绩),并能打印自我介绍。

1. 封装示例

publicclassStudent{// 私有属性(隐藏内部数据)privateStringname;privateintage;privatedoublescore;// 构造方法(创建对象时初始化)publicStudent(Stringname,intage,doublescore){this.name=name;setAge(age);// 调用setter做校验this.score=score;}// 公共 getter/setter(提供访问入口)publicStringgetName(){returnname;}publicintgetAge(){returnage;}publicdoublegetScore(){returnscore;}publicvoidsetAge(intage){if(age>=0&&age<=120){this.age=age;}else{thrownewIllegalArgumentException("年龄非法");}}// 行为方法publicvoidintroduce(){System.out.println("我是"+name+",今年"+age+"岁,成绩"+score);}}

2. 继承示例

// 父类classPerson{protectedStringname;publicPerson(Stringname){this.name=name;}publicvoideat(){System.out.println(name+"在吃饭");}}// 子类classTeacherextendsPerson{privateStringsubject;publicTeacher(Stringname,Stringsubject){super(name);this.subject=subject;}publicvoidteach(){System.out.println(name+"教"+subject);}// 重写父类方法@Overridepublicvoideat(){System.out.println(name+"老师在食堂吃饭");}}

3. 多态示例

Personp=newTeacher("张老师","Java");p.eat();// 输出:张老师在食堂吃饭(子类重写的方法)// p.teach(); // 编译错误,父类引用无法调用子类特有方法if(pinstanceofTeacher){Teachert=(Teacher)p;t.teach();// 向下转型后可以调用}

四、避坑要点

错误/误区后果正确做法
把所有属性都写成public数据不安全,难以维护private+getter/setter
继承时重写方法忘了写@Override容易写错成重载,导致意外不执行始终加上@Override注解
多态时滥用instanceof和向下转型代码冗长,违反开闭原则优先在父类中定义足够的方法
构造方法中调用可被子类重写的方法子类未完全初始化,可能空指针构造方法中只调用private/final方法

五、面试高频考点

Q1:面向对象和面向过程的区别?

面向过程以函数为中心,数据与函数分离,适合简单、固定流程的任务。面向对象以对象为中心,封装、继承、多态使代码更易维护和扩展。

Q2:继承和组合如何选择?

继承是“is-a”关系(狗是动物),组合是“has-a”关系(汽车有引擎)。组合更灵活,避免继承的紧耦合,优先使用组合。

Q3:多态的实现原理(JVM层面)?

通过方法表(vtable)实现。子类重写方法会替换父类方法在方法表中的条目,运行时根据实际对象类型查找调用。

六、练习题

  1. 设计题:定义一个BankAccount类,包含账号、余额、存款、取款方法,要求余额不能为负,取款不能超过余额。
  2. 代码阅读:给出以下代码输出,并解释原因。
    classA{voidprint(){System.out.print("A");}}classBextendsA{voidprint(){System.out.print("B");}}publicclassTest{publicstaticvoidmain(String[]args){Aa=newB();a.print();}}
  3. 动手:创建一个Animal父类和CatDog子类,实现多态调用makeSound()

👉 下一篇预告

《Java基本数据类型》

内容简介:8种基本类型分别占多少字节?取值范围是多少?默认值是什么?类型转换有哪些陷阱?

💡 学完这篇,你将彻底掌握 Java 的数据根基,写出更高效、更安全的代码。

📌下一篇预计明天10:00更新
👉 点击关注我,更新后第一时间收到推送!
📌 本系列每天一篇,建议收藏 + 关注,一起30天从入门到就业。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 19:24:51

UNIAGENT:统一AI智能体框架的设计原理与实战应用

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为UNIAGENT的项目引起了我的注意。它由开发者 BastianMIllan 发起&#xff0c;定位是“一个统一的、可扩展的 AI 智能体框架”。听起来是不是有点耳熟&#xff1f;没错&#xff0c;随着大语言模型能力的爆发&#xff0…

作者头像 李华
网站建设 2026/5/8 19:24:50

第8篇:Java基本数据类型

第8篇&#xff1a;Java基本数据类型 一、核心知识点 8大基本类型&#xff1a;byte、short、int、long、float、double、char、boolean占用内存大小、取值范围、默认值字面量表示&#xff08;L、F、进制、\u转义&#xff09;类型转换&#xff1a;自动类型转换&#xff08;隐式…

作者头像 李华
网站建设 2026/5/8 19:21:44

使用taotoken cli工具一键配置团队统一开发环境

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用taotoken cli工具一键配置团队统一开发环境 为整个开发团队配置统一的大模型调用环境&#xff0c;常常意味着需要逐一指导每位…

作者头像 李华
网站建设 2026/5/8 19:17:29

Taxonomy国际化方案:从零实现多语言支持的完整指南

Taxonomy国际化方案&#xff1a;从零实现多语言支持的完整指南 【免费下载链接】taxonomy An open source application built using the new router, server components and everything new in Next.js 13. 项目地址: https://gitcode.com/gh_mirrors/ta/taxonomy Taxon…

作者头像 李华
网站建设 2026/5/8 19:09:53

如何用cloud_enum发现AWS S3桶和应用程序的安全隐患

如何用cloud_enum发现AWS S3桶和应用程序的安全隐患 【免费下载链接】cloud_enum Multi-cloud OSINT tool. Enumerate public resources in AWS, Azure, and Google Cloud. 项目地址: https://gitcode.com/gh_mirrors/cl/cloud_enum 在当今云计算时代&#xff0c;AWS S3…

作者头像 李华