抽象类
抽象类
~在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类
~抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样
~由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类
~父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法
~在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口
抽象函数/抽象类
~抽象函数-表达概念而无法实现具体代码的函数
~抽象类-表达概念而无法构造出实体的类
~带有abstract修饰符的函数
~有抽象函数的类一定是抽象类
~抽象类不能制造对象
~但是可以定义变量
~任何继承了抽象类的非抽象类的对象可以付给这个变量
实现抽象函数
~继承自抽象类的子类,必须覆盖父类中的抽象函数
~否则自己成为抽象类
两种抽象
~与具体相对
~表示一种概念而非实体
~与细节相对
~表示在一定程度上忽略细节而着眼大局
在 Java 语言中使用 abstract class 来定义抽象类 例:
注意到该 Employee 类没有什么不同,尽管该类是抽象类,但是它仍然有 3 个成员变量,7 个成员方法和 1 个构造方法
当你尝试编译 AbstractDemo 类时,会产生错误
抽象类总结
-
1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象
-
2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
-
3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能
-
4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法
-
5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)