资讯动态

第7篇:Java面向对象简介

发布时间:2026/8/11 0:34:20 来源:尧图企业网站定制
第7篇Java面向对象简介一、核心知识点面向对象OOP的核心思想对象、类、继承、封装、多态类与对象的关系蓝图与实例封装的意义隐藏实现细节暴露公共方法继承代码复用extends关键字多态父类引用指向子类对象方法重写面向过程POP与面向对象OOP的对比二、通俗讲解1分钟开心学1. 面向过程 vs 面向对象面向过程以“函数”为核心数据和方法分开。就像一份菜谱先洗菜再切菜再炒菜。优点是简单直接缺点是代码难扩展。面向对象以“对象”为核心把数据和操作打包在一起。就像你有一个“厨师”对象他有菜刀、锅、食材属性也有“做菜”方法。你只管跟厨师说“做菜”不用管内部细节。生活类比面向过程就像去修理店你跟老板说“先拿螺丝刀拆后盖换电池装后盖。”每一步都要你指挥面向对象就像你直接把手机给维修机器人说“帮我换电池。”机器人自己会拿工具、拆机、更换。你只关心结果不关心过程。2. 四大特征封装把数据属性和行为方法包在一起对外隐藏内部细节。比如汽车的油门踏板你踩它就加速但你不需要知道发动机怎么喷油。继承子类继承父类的属性和方法实现代码复用。比如“电动汽车”继承“汽车”拥有汽车的所有功能还可以增加充电功能。多态同一个行为不同对象表现出不同形态。比如“动物”都有“叫”的方法猫叫“喵”狗叫“汪”。抽象常作为第四特征只定义规范不实现具体细节。比如“形状”有“计算面积”的方法但不知道具体怎么算。3. 类与对象类图纸。定义了一类事物共有的属性和行为。对象根据图纸造出来的实物。每个对象都有自己的状态属性值。三、实操代码案例 场景说明场景你要开发一个学生管理系统需要描述学生的基本信息姓名、年龄、成绩并能打印自我介绍。1. 封装示例publicclassStudent{// 私有属性隐藏内部数据privateStringname;privateintage;privatedoublescore;// 构造方法创建对象时初始化publicStudent(Stringname,intage,doublescore){this.namename;setAge(age);// 调用setter做校验this.scorescore;}// 公共 getter/setter提供访问入口publicStringgetName(){returnname;}publicintgetAge(){returnage;}publicdoublegetScore(){returnscore;}publicvoidsetAge(intage){if(age0age120){this.ageage;}else{thrownewIllegalArgumentException(年龄非法);}}// 行为方法publicvoidintroduce(){System.out.println(我是name今年age岁成绩score);}}2. 继承示例// 父类classPerson{protectedStringname;publicPerson(Stringname){this.namename;}publicvoideat(){System.out.println(name在吃饭);}}// 子类classTeacherextendsPerson{privateStringsubject;publicTeacher(Stringname,Stringsubject){super(name);this.subjectsubject;}publicvoidteach(){System.out.println(name教subject);}// 重写父类方法Overridepublicvoideat(){System.out.println(name老师在食堂吃饭);}}3. 多态示例PersonpnewTeacher(张老师,Java);p.eat();// 输出张老师在食堂吃饭子类重写的方法// p.teach(); // 编译错误父类引用无法调用子类特有方法if(pinstanceofTeacher){Teachert(Teacher)p;t.teach();// 向下转型后可以调用}四、避坑要点错误/误区后果正确做法把所有属性都写成public数据不安全难以维护用privategetter/setter继承时重写方法忘了写Override容易写错成重载导致意外不执行始终加上Override注解多态时滥用instanceof和向下转型代码冗长违反开闭原则优先在父类中定义足够的方法构造方法中调用可被子类重写的方法子类未完全初始化可能空指针构造方法中只调用private/final方法五、面试高频考点Q1面向对象和面向过程的区别面向过程以函数为中心数据与函数分离适合简单、固定流程的任务。面向对象以对象为中心封装、继承、多态使代码更易维护和扩展。Q2继承和组合如何选择继承是“is-a”关系狗是动物组合是“has-a”关系汽车有引擎。组合更灵活避免继承的紧耦合优先使用组合。Q3多态的实现原理JVM层面通过方法表vtable实现。子类重写方法会替换父类方法在方法表中的条目运行时根据实际对象类型查找调用。六、练习题设计题定义一个BankAccount类包含账号、余额、存款、取款方法要求余额不能为负取款不能超过余额。代码阅读给出以下代码输出并解释原因。classA{voidprint(){System.out.print(A);}}classBextendsA{voidprint(){System.out.print(B);}}publicclassTest{publicstaticvoidmain(String[]args){AanewB();a.print();}}动手创建一个Animal父类和Cat、Dog子类实现多态调用makeSound()。 下一篇预告《Java基本数据类型》内容简介8种基本类型分别占多少字节取值范围是多少默认值是什么类型转换有哪些陷阱 学完这篇你将彻底掌握 Java 的数据根基写出更高效、更安全的代码。下一篇预计明天10:00更新 点击关注我更新后第一时间收到推送 本系列每天一篇建议收藏 关注一起30天从入门到就业。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价