Java接口和抽象类如何选择!
前言
接口和抽象类提供了一种将接口与实现分离的更加结构化的方法。
抽象类
Java 提供了一个叫做抽象方法的机制,这个方法是不完整的:它只有声明没有方法体。下面是抽象方法的声明语法:
abstract void f();
【Java接口和抽象类如何选择!】包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,那么类本身也必须限定为抽象的,否则,编译器会报错。
abstract class User {
abstract void f();
}
创建抽象类和抽象方法使得类的抽象性很明确,并能告知用户和编译器使用意图。抽象类同时也是一种有用的重构工具,使用它们使得我们很容易地将沿着继承层级结构上移公共方法。
接口 使用 interface 关键字创建接口。
public interface User {
void f();
}
- 多继承
//多继承
interface One {
default void first() {
System.out.println("first");
}
}interface Two {
default void second() {
System.out.println("second");
}
}interface Three {
default void third() {
System.out.println("third");
}
}class MI implements One, Two, Three {}
抽象类和接口 在实际开发中选择用抽象类还是用接口是一件令人困惑的事情,抽象类仍然是一个类,在创建新类时只能继承它一个。而创建类的过程中可以实现多个接口。下表做了明确的区分:
特性 | 接口 | 抽象类 |
---|---|---|
组合 | 新类可以组合多个接口 | 只能继承单一抽象类 |
状态 | 不能包含属性(除了静态属性,不支持对象状态) | 可以包含属性,非抽象方法可能引用这些属性 |
默认方法 和 抽象方法 | 不需要在子类中实现默认方法。默认方法可以引用其他接口的方法 | 必须在子类中实现抽象方法 |
构造器 | 没有构造器 | 可以有构造器 |
可见性 | 隐式 public | 可以是 protected 或友元 |
最后的最后 为初学者提供学习指南,为从业者提供参考价值。我坚信码农也具有产生洞见的能力。扫描下图二维码关注,学习和交流!
文章图片
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 基于微信小程序带后端ssm接口小区物业管理平台设计