2026/4/17 23:58:25
网站建设
项目流程
网站技术架构图,wordpress 标签描述,wordpress菜单不兼容,虚拟主机网站模板文章目录Java面向对象必考点#xff1a;封装、继承、多态深度揭秘封装#xff1a;给代码穿上“防护衣”为什么需要封装#xff1f;封装的具体实现封装的好处继承#xff1a;站在巨人的肩膀上继承的基本语法继承的优势继承的注意事项继承中的访问控制多态#xff1a;一个接…文章目录Java面向对象必考点封装、继承、多态深度揭秘封装给代码穿上“防护衣”为什么需要封装封装的具体实现封装的好处继承站在巨人的肩膀上继承的基本语法继承的优势继承的注意事项继承中的访问控制多态一个接口多种实现多态的体现编译时多态方法重载运行时多态方法重写实现多态的条件多态的好处注意事项总结这三个概念是面向对象编程的核心熟练掌握它们对于编写高质量、可维护的Java代码非常重要。 领取 | 1000 套高质量面试题大合集无套路闫工带你飞一把Java面向对象必考点封装、继承、多态深度揭秘各位小伙伴们大家好闫工我又来啦这次我们要聊的是Java面向对象编程的三大核心概念——封装、继承和多态。这三者可是Java面试中必考的知识点掌握不好可能会让你在面试官面前“翻车”哦不过不用担心闫工今天就带着你们一起深入理解这三个概念轻松应对面试。封装给代码穿上“防护衣”封装英文是Encapsulation它的核心思想就是将对象的属性和行为绑定在一起并且通过访问控制符来限制外界对对象内部数据的直接操作。简单来说就是把一些东西藏起来只让外界看到我们需要展示的部分。为什么需要封装举个例子假设我们有一个员工管理系统每个员工都有一个工资属性。如果我们不进行封装其他类可以直接修改这个工资值这就可能导致工资被随意更改甚至可能引发一些意想不到的问题比如老板突然发现你的工资被改成了负数。为了防止这种情况发生我们就需要把工资这个属性隐藏起来并提供一个合理的接口来修改它。封装的具体实现在Java中封装主要是通过访问控制符来实现的。常见的访问控制符有四个public公有的所有类都可以访问。protected受保护的同包内的子类可以访问。default即不写任何修饰符默认访问权限只有同一包内的类才能访问。private私有的只能在本类中访问。封装的关键在于将属性设置为private并提供public的方法来对这些属性进行操作。比如publicclassEmployee{privatedoublesalary;// 私有属性publicdoublegetSalary(){// 公共的获取方法returnsalary;}publicvoidsetSalary(doublesalary){// 公共的设置方法if(salary0){this.salarysalary;}else{System.out.println(工资不能为负数);}}}在这段代码中salary被设置为private外界无法直接访问它。但是我们提供了两个public方法getSalary()和setSalary(double salary)通过这些方法可以间接地获取和修改salary的值。而且在setSalary方法中我们还增加了一些逻辑判断确保工资只能是正数。封装的好处数据安全性封装可以防止外部代码随意修改对象的状态。隐藏实现细节外界不需要知道具体的实现方式只需要通过提供的接口进行操作即可。便于维护和扩展如果需要改变属性的存储方式或者增加一些逻辑判断只需要修改对应的getter和setter方法而不会影响到使用这些方法的其他代码。继承站在巨人的肩膀上继承英文是Inheritance它表示一种类之间的“is-a”关系。比如狗是一种动物手机是一种电子产品等等。在Java中继承允许一个类子类继承另一个类父类的属性和方法从而减少代码重复提高代码复用性。继承的基本语法在Java中使用extends关键字来表示继承关系。例如publicclassAnimal{publicvoideat(){System.out.println(动物吃东西);}}publicclassDogextendsAnimal{// Dog类继承Animal类publicvoidbark(){System.out.println(狗叫);}}在这段代码中Dog类继承了Animal类的所有属性和方法。因此我们可以创建一个Dog对象并调用它的eat()方法DogdognewDog();dog.eat();// 输出动物吃东西dog.bark();// 输出狗叫继承的优势代码复用子类可以直接使用父类的属性和方法无需重复编写相同的代码。层次化结构继承关系可以很好地体现现实世界中的层次结构。多态的基础后续我们会讲到继承是实现多态的前提之一。继承的注意事项单继承Java只支持单继承也就是说一个类只能有一个直接父类。但是可以通过接口来实现多重继承的效果。构造方法问题在子类中如果不显式地调用父类的构造方法默认会隐式调用父类无参数的构造方法。如果父类没有无参数构造方法则会导致编译错误。避免过度继承虽然继承可以提高代码复用性但是过度使用继承会导致类之间的耦合度过高增加维护难度。继承中的访问控制在Java中继承时子类对父类成员的访问权限取决于父类成员的修饰符public子类可以访问。protected子类可以访问。default如果子类和父类在同一包内可以访问否则无法访问。private子类无法访问。多态一个接口多种实现多态英文是Polymorphism它允许同一个方法在不同的对象中表现出不同的行为。简单来说就是“同样的接口不同的实现”。多态的体现多态主要体现在以下几个方面编译时多态静态多态通过方法重载实现。运行时多态动态多态通过继承和方法重写实现。编译时多态方法重载方法重载是指在同一个类中定义多个同名但参数不同的方法。Java编译器会根据调用时传递的参数类型和数量来决定具体调用哪个方法。例如publicclassCalculator{publicintadd(inta,intb){returnab;}publicdoubleadd(doublea,doubleb){returnab;}}CalculatorcalcnewCalculator();System.out.println(calc.add(1,2));// 调用int版本输出3System.out.println(calc.add(1.5,2.5));// 调用double版本输出4.0运行时多态方法重写方法重写是指在子类中重新定义与父类同名且参数相同的方法。运行时会根据实际对象类型来决定调用哪个方法。例如publicclassAnimal{publicvoidsound(){System.out.println(动物发出声音);}}publicclassDogextendsAnimal{Override// 重写sound方法publicvoidsound(){System.out.println(汪汪叫);}}Animalanimal1newAnimal();animal1.sound();// 输出动物发出声音DogdognewDog();dog.sound();// 输出汪汪叫// 多态体现父类引用指向子类对象Animalanimal2newDog();animal2.sound();// 输出汪汪叫实现多态的条件继承关系必须是父子类关系。方法重写子类必须重写父类的方法。向上转型使用父类引用指向子类对象。多态的好处灵活性和扩展性增加新类型时只需要实现相同的接口即可无需修改原有代码。简化调用者代码调用者只需要知道父类的接口而不需要关心具体是哪个子类的对象。注意事项方法重写规则子类方法的参数必须与父类方法完全一致类型、顺序。子类方法的返回值类型必须与父类相同或更严格。无法重写静态方法因为静态方法属于类而不是对象。final方法不能被重写如果父类的方法被声明为final则子类无法重写它。总结封装Encapsulation通过访问修饰符和getter/setter方法来隐藏实现细节保护数据不被随意修改。继承Inheritance允许一个类继承另一个类的属性和方法提高代码复用性。多态Polymorphism同一个接口可以有多种实现方式增强代码的灵活性和扩展性。这三个概念是面向对象编程的核心熟练掌握它们对于编写高质量、可维护的Java代码非常重要。 领取 | 1000 套高质量面试题大合集无套路闫工带你飞一把成体系的面试题无论你是大佬还是小白都需要一套JAVA体系的面试题我已经上岸了你也想上岸吗闫工精心准备了程序准备面试想系统提升技术实力闫工精心整理了1000 套涵盖前端、后端、算法、数据库、操作系统、网络、设计模式等方向的面试真题 详细解析并附赠高频考点总结、简历模板、面经合集等实用资料✅ 覆盖大厂高频题型✅ 按知识点分类查漏补缺超方便✅ 持续更新助你拿下心仪 Offer免费领取 点击这里获取资料已帮助数千位开发者成功上岸下一个就是你✨