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

【JAVASE】抽象类

1、抽象类概念

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。比如:

说明:

(1)矩形、三角形、椭圆都是图形,因此和Shape类之间的关系都是继承关系

(2)虽然图形类Shape中也存在draw的方法,但由于Shape类并不是具体的图形,因此其内部的draw的方法实际是没有办法实现的。

(3)由于Shape类没有办法描述一个具体的图形,导致其draw()方法无法具体实现,一次可以将Shape类设计为“抽象类”。

在打印图形案例中,我们发现父类Shape中的draw()方法并没有什么实际工作,主要的绘制图形都是有Shape的各种子类的draw()方法来完成的,像这种没有实际工作的方法,我们可以把它设计成一个抽象方法,包含抽象方法的类我们称之为抽象类

2、抽象类语法

在java中,一个类如果被abstract修饰,则该类被称为抽象类,抽象类中被abstract修饰的方法称为抽象方法,抽象方法不用给出具体的方法体

代码:

注意:抽象类也是类,内部也可以包含普通方法、成员变量、构造方法

3、抽象类特性

(1)抽象类不能直接实例化对象

代码:

Shape.java

Test.java


(2)抽象方法不能被private修饰

代码如下:

(3)抽象方法不能被final和static修饰,因为抽象方法要被子类重写

代码1:

代码2:

(4)抽象类必须被继承,并且子类要重写父类中的抽象方法,否则子类也是抽象类,必须使用abstract修饰。

当我们对抽象类的子类补充写父类的抽象方法时,会报一下错误:
 

但是如果也让子类被abstract修饰,则不会报错:

(5)抽象类不一定包含抽象方法,但是抽象方法一定是抽象类

(6)抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

4、抽象类的作用

抽象类本身不能被实例化,要想使用,只能创建抽象类的子类,然后让子类重写抽象类中的方法。

有人可能有疑问,普通的类也可以被继承,普通的方法也可以被重写,为什么非得用抽象类和抽象方法呢?

确实如此,但是使用抽象类相当于多了一重编译器的校验。

如何理解校验?

比如:抽象类中有抽象方法,则子类继承时,父类中的抽象方法必须被重写,否则就会报错。

http://www.lryc.cn/news/353995.html

相关文章:

  • 嵌入式硬件中PCB走线与过孔的电流承载能力分析
  • 动态规划之背包问题中如何确定遍历顺序的问题-组合or排列?
  • 开源大模型与闭源大模型
  • python+selenium - UI自动框架之封装查找元素
  • java 拦截器-用户无操作超时退出利用Redis
  • 民国漫画杂志《时代漫画》第16期.PDF
  • 线程池以及日志类的实现
  • 基于长短期记忆网络 LSTM 的送餐时间预测
  • K-means聚类算法详细介绍
  • SAP FS00如何导出会计总账科目表
  • ROS参数服务器
  • QCC---DFU升级变更设备名和地址
  • [力扣题解] 695. 岛屿的最大面积
  • AI模型发展路径探析:开源与闭源,何者更胜一筹?
  • concurrency 并行编程
  • JavaScript如何让一个按钮的点击事件在完成之前禁用
  • 透视App投放效果,Xinstall助力精准分析,让每一分投入都物超所值!
  • 【Linux杂货铺】进程通信
  • 常用API(正则表达式、爬取、捕获分组和非捕获分组 )
  • JVM学习-Class文件结构②
  • 数据库连接项目
  • MySQL--InnoDB体系结构
  • ffplay 使用文档介绍
  • 四种网络IO模型
  • Mixed-precision计算原理(FP32+FP16)
  • Go 控制协程(goroutine)的并发数量
  • web安全渗透测试十大常规项(一):web渗透测试之CSRF跨站请求伪造
  • YOLOv10尝鲜测试五分钟极简配置
  • 社交媒体数据恢复:聊天宝
  • 备战秋招—模拟版图面试题来了