Java普通类、抽象类、接口的对比
| 比较项 | 普通类 | 抽象类 | 接口 |
|---|---|---|---|
| 定义关键字 | class | abstract class | interface |
| 继承或实现关键字 | extends | extends | implements |
| 成员字段 | 变量、常量 | 变量、常量 | 常量 |
| 构造器 | 既可以定义也可以实例化 | 只能定义,不能实例化 | 既不能定义也不能实例化 |
| 成员方法 | 普通方法、静态方法 | 普通方法、静态方法、抽象方法 | 抽象方法、静态方法、默认方法 |
通过表格进行对比,当根据需求分析,不仅需要创建抽象方法,还需要其他复杂操作,推荐使用抽象类,功能更强大,下面分别展开说说抽象类和接口
抽象类
abstract关键字特点
能够修饰类和成员方法
- 修饰的类不能实例化对象
- 修饰的成员方法没有方法体
格式
java
public abstract class 类名 {
成员字段;
// 抽象类中定义构造器,只使用构造器进行值传递
构造器;
成员方法;
// 抽象方法 [ ] 中包含的内容,表示可省略
public abstract 返回值类型 方法名([参数列表]);
}
抽象类中可以定义的内容

接口
接口是按照用户需求封装方法,由具体的实现类去实现
为什么要使用接口
由于Java只支持单继承模式,避免单继承局限性,使用接口
定义格式
java
public interface 接口名{
接口成员;
}
接口中可以定义的内容

如图在IDEA中,简单创建了一个接口类,并定义了成员,接口中不能定义的成员是报错的
类如何去实现抽象类和接口
先继承父类再实现接口,接口可以实现多个
java
public [修饰符] class 类名 extends 父类 implements 接口[,接口1,...,接口n] {
成员字段;
构造器;
成员方法;
重写接口中的所有抽象方法;