当前位置: 首页 > news >正文

(5)封装继承多态

这三个是面向对象的三个特性。主要目的就是为了对代码进行解耦重构。

一、封装

封装就是将数据和对数据的操作封装在一个类里面,从外部不可访问,只能通过给出的访问接口对数据进行处理。

二、继承

人有父子关系、母子关系,类也有!这么做的目的主要是为了让子类不那么的冗余,所有和父类有关系的都能进行继承访问。

// 继承的语法publicclassDeriveextendsBase{}

Java语法只支持单继承,也就是说一个类最多只能有一个父类

1、构造函数

如果你构造一个子类对象,在子类对象初始化之前,父类对象要先进行初始化。
调用父类构造或者当前类的构造,构造函数必须放在第一句

publicclassDeriveextendsBase{intb;Derive(){//super()是在子类中调用父类的构造函数//如果一个父类只有默认构造函数,super()可写可不写//如果一个父类实现了有参构造,这个super()必须显示调用,传参super();b=1;}}

2、this指针

  1. this主要指向的是调用对象。
  2. 主要区分和类成员属性名、方法名相同的变量名、方法名
    this指针你可以理解为一个隐形的参数,传参在每个类方法的第一个参数位置上,指向调用的对象
publicclassBase{inta;// 在这里就是主要对参数a和类属性a进行区分publicBase(inta){this.a=a;}}

3、super指针

这个指针和this指针差不多功能,但是主要是为了区分和父类成员属性名、方法名相同的变量名、方法名。

publicclassDerive{inta;// 在这里就是主要对参数a和类属性a进行区分publicDerive(inta){// 如果父类是有参构造,需要往super()里面进行传参super()this.a=a;}}

4、final关键字

  1. final修饰变量x,x不能被修改。
  2. final修饰成员变量,成员变量必须被初始化
  3. final修饰类,类不能被继承。
  4. final修饰类方法,方法不能被重写。

三、多态

多态就是同一种行为具有不同的表现形式。主要表现在猫狗都会叫,但是叫的行为不一样,一个“喵喵叫”,一个“汪汪叫”。
多态 = 动态绑定 + 继承 + 重写

1、多态的构成条件

  1. 必须在继承关系体系下。
  2. 必须子类重写父类的方法。
  3. 必须通过父类引用调用重写方法。

[!NOTE] 注意!!!

  • 子类方法的权限一定要大于等于父类方法的权限。
  • 被private修饰的成员方法不能被重写。
  • 被static修饰的成员方法不能被重写。
  • 被final修饰的成员方法不能被重写。
publicclassAnimal{publicvoidbark(){System.out.println("Animal叫!!!");}}-------------------------------------------publicclassCatextendsAnimal{publicvoidbark(){System.out.println("Cat叫!!!");}}-------------------------------------------publicclassMain{publicstaticvoidmain(String[]args){Animalanimal1=newCat();animal1.bark();}}

2、重载、重写

(1)重载

  • 方法名相同
  • 参数列表不同(参数的个数、顺序、类型)
  • 返回值不做要求!!!
    (2)重写
  • 必须在继承体系下
  • 子类重新定义父类的非静态、非final方法
  • 返回值、方法名、参数列表均相同

3、向上 转型、向下转型

向上转型是将子类引用赋值给父类。
向下转型是将父类引用赋值给子类(父类引用必须是子类)。
向下转型关键字instanceof

publicclassMain{publicstaticvoidmain(String[]args){// 向上转型Animalanimal=newCat();// 向下转型if(animalinstanceofCat){Catcat=(Cat)animal;}}}
http://www.jsqmd.com/news/1117072/

相关文章:

  • Claude Sonnet 5 深度解析:当“中间件“开始挑战旗舰的权威
  • AD74413R与MSP432P401R构建高精度混合信号处理系统
  • 开源反勒索工具AntiRansom:行为监控与诱饵文件防御实战
  • wifi驱动适配源码实现分析
  • 【Java踩坑笔记】22_ThreadLocal用完不remove,内存泄漏在等你
  • Grok 4.3 长上下文使用教程:如何阅读 PDF、会议记录和项目文档
  • 隐藏WIN10开始菜单应用[系统]标签
  • STM32与MC6470 IMU的硬件协同与姿态控制实现
  • 困难任务推进不动时,我用0.1%最小成功法自救
  • 跨境电商蓝海模式:反向海淘搭建
  • AI 搜索工具烹饪查询结果直链原始食谱,却因 AI 生成食谱问题遭部分美食作家不满
  • 自动驾驶场景下YOLO系列实时目标检测:性能实测与选型避坑指南
  • IIM-42652 IMU与STM32L152ZD的6DoF运动解算实践
  • AI生成式设计:从创意辅助到全流程赋能,重构设计产业底层逻辑
  • 如何精准识别高校与地方产业的协同发展机会?
  • NoFences:开源免费的Windows桌面栅栏工具,终结桌面混乱时代
  • 字节序转换 + 模板
  • 杰理之IO默认对电压1/2分压,还要开下拉【篇】
  • PX4多旋翼无人机集群协同控制:从集中式指挥到分布式自治的技术演进
  • 3PEAK思瑞浦 LM393-SO1R SOP8 比较器
  • 终极指南:如何用SecGPT网络安全大模型提升你的安全防御能力
  • LED驱动电源选型标准与工程应用技术避坑指南
  • 2026年7月1日“每日芯闻”
  • AI生产力流水线:从业务场景出发的工具选型与工程化落地
  • 【解压即用】Ltx2.3 文生视频/图生视频本地一体化整合包发布与全面评测
  • BiSheng JDK 21模块化系统深度解析:Java模块化架构最佳实践
  • 中小音乐团队版权方案,知保链低成本电子存证批量登记音频
  • 2026照片抠图工具全解:电脑手机免费软件与在线网站实操指南
  • [042][数据模块]Mybatis Plus 数据库级租户:基于多数据源路由的动态隔离实现
  • 靠谱无轨龙门架销售厂家揭秘,满足你对高品质设备的需求!