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

Java中的抽象类

1.抽象类是什么

2.抽象类和抽象方法如何定义

3.抽象类特征


1.抽象类是什么

在前面我们学习过了继承和多态,我们可以定义一个父类,还有诸多个子类,父类里面有子类的共同特性,子类可以继承父类,并且调用到父类的成员方法和成员变量,如果我们子类对父类的方法不满意时,可以在子类中重写父类的方法,这样在运行的时候,会产生动态绑定,会调用到子类重写的方法,这也就是多态。

但是,一个父类并不能很具体的表达出子类的需求,比如我要画一个图形,我们可以定义一个父类,然后有熊,鸭子,鱼三个子类,父类中可以定义一个shap方法,但是shape方法中,并不能明确知道要画什么图案,毕竟不能规定只画一种图案,这时,我们就可以不去实例化父类中shape方法,由子类自由的实例化每一个想要画什么图形的方法shap --- 此时父类就被定义为抽象类,而子类中的shape方法就为抽象方法

2.抽象类和抽象方法如何定义

抽象类和抽象方法的定义都要使用abstract关键字

抽象方法必须在抽象类中定义

下面是父类中的抽象方法shape,被abstract修饰的方法,就可以不实例化

如果一个类被abstract所修饰,那么这个类就成为抽象类,而一个普通类继承了抽象类,那么这个子类就必须要重写并实例化抽象类中的抽象方法

3.抽象类特征

1.抽象类也是属于类,它也可以定义普通成员变量和普通方法,子类也可以重写抽象类中的普通成员方法,运行是也会动态绑定,调用到子类重写抽象类中的方法,也会实现多态

2.抽象类可以没有抽象方法,但是抽象方法一定是在抽象类中创建的!!!

如果抽象方法在普通类中定义,那么就会报错

3.抽象方法不能被static final private所修饰,因为抽象类必须被继承,而抽象方法就必须被重写,如果抽象方法被static final private所修饰,那么就不能被重写,那么就这个抽象方法就没意义了

4.抽象类可以有构造方法,作用是为了通过子类调用构造方法初始化父类的成员变量

5.普通类继承了抽象类,那么普通类就必须实例化抽象类中的抽象方法

6.如果一个普通类A继承了抽象类B,但是这个普通类A又不想实例化抽象类B的抽象方法,那么可以将普通类A用abstract修饰,让A也成为抽象类,这样就可以不用实例化抽象类B中的抽象方法,但是如果又有一个普通类C继承了抽象类A,那么普通类C不仅仅要实例化抽象类B中的抽象方法,也必须要实例化抽象类A中的抽象方法。

http://www.xdnf.cn/news/936145.html

相关文章:

  • 【Redis】持久化
  • Redis知识体系
  • 【深度学习】表示学习:深度学习的数据解构与重构艺术
  • Effective Java 第三版 第二三章总结
  • Selenium自动化操作
  • Java中双端队列的多种实现类详解
  • 力扣面试150题--课程表
  • LabVIEW多道心电记录仪
  • 【靶场】XXE-Lab xxe漏洞
  • Java严格模式withResolverStyle解析日期错误及解决方案
  • PLC入门【1】PLC的简单介绍(教学软件:FX-TRN-BEG-C)
  • Spring Boot中Bean注入方式对比与最佳实践
  • AUTOSAR实战教程--开放式通用DoIP刷写工具OpenOTA开发计划
  • 分类场景数据集大全「包含数据标注+训练脚本」 (持续原地更新)
  • MCP Tool模块详解
  • 听写流程自动化实践,轻量级教育辅助
  • 【原创】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • Unity中如何播放视频
  • 数据结构——F/图
  • 一个一键生成知识讲解类教育视频的ai工具
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十一)
  • 【MySQL系列】MySQL 导出表数据到文件
  • 内存分配基础:修改SCT文件的简单例子
  • JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
  • 【Ftrace 专栏】Ftrace 基础使用
  • LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
  • AI 大模型统一集成|Spring AI + DeepSeek 实战接入指南
  • 【教学类-53-02】20250607自助餐餐盘教学版(配餐+自助餐)
  • Windows下用CMake编译DCMTK及配置测试
  • DeepSeek R1 V2 深度探索:开源AI编码新利器,效能与创意并进