接口 (Interface)
- **定义**:使用 `interface` 关键字定义。
- **实例化**:接口不能被直接实例化。
- **实现**:一个类可以实现多个接口。
- **方法**:Java 8 之前,接口中只能包含抽象方法(默认为 `public abstract`)。Java 8 之后,接口可以包含默认方法(`default`)和静态方法(`static`),并且这些方法需要有方法体。
- **成员变量**:接口中只能有常量,即 `public static final` 变量,并且需要初始化。
- **设计思想**:主要用于定义行为规范,强调“做什么”。
抽象类 (Abstract Class)
- **定义**:使用 `abstract` 关键字定义。
- **实例化**:抽象类不能被直接实例化。
- **继承**:一个类只能继承一个抽象类。
- **方法**:抽象类可以包含抽象方法和非抽象方法。非抽象方法需要有方法体。
- **成员变量**:抽象类可以有实例变量和静态变量,包括私有变量。
- **设计思想**:用于表示一种类的继承关系,强调“是什么”,包含共享的代码和通用的行为。
关键区别
- **继承与实现**:
- 抽象类:使用 `extends` 继承。
- 接口:使用 `implements` 实现。
- **多继承**:
- 抽象类:一个类只能继承一个抽象类。
- 接口:一个类可以实现多个接口。
- **方法实现**:
- 抽象类:可以包含抽象方法和具体方法。
- 接口:Java 8 之前只能包含抽象方法,Java 8 之后可以包含默认方法和静态方法。
- **成员变量**:
- 抽象类:可以有各种类型的成员变量,包括私有变量。
- 接口:只能有 `public static final` 常量,并且需要初始化。
- **设计思想**:
- 抽象类:强调“是什么”,包含共享的代码和通用的行为。
- 接口:强调“做什么”,定义行为规范。
总结
- **接口**:主要用于定义行为规范,允许一个类实现多个接口,增强代码的灵活性。
- **抽象类**:主要用于表示类的继承关系,提供共享的代码和通用的行为,强调“是什么”。
这两种设计模式各有优势,选择使用哪种取决于具体的业务需求和设计目标。
标签:变量,包含,区别,继承,接口,抽象类,方法 From: https://www.cnblogs.com/89564f/p/18525903