Java 中接口与抽象类区别?
| 参数 | 抽象类 | 接口 |
|---|---|---|
| 默认的方法实现 | 它可以有默认的方法实现 | 接口完全是抽象的,不存在方法的实现 |
| 实现 | 子类使用 extends 关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 | 子类使用关键字 implements 来实现接口。它需要提供接口中所有声明的方法的实现 |
| 构造器 | 抽象类可以有构造器 | 接口不能有构造器 |
| 与正常 Java 类的区别 | 除了你不能实例化抽象类之外,它和普通Java 类没有任何区别 | 接口是完全不同的类型 |
| 访问修饰符 | 抽象方法可以有 public、protected 和default 这些修饰符 | 接口方法默认修饰符是 public,不可以使用其它修饰符 |
| main方法 | 抽象方法可以有 main 方法并且可以运行 | 接口没有main 方法 |
| 多继承 | 抽象方法可以继承一个类和实现多个接口 | 接口只可以继承一个或多个其它接口 |
| 速度 | 它比接口速度要快 | 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法 |
| 添加新方法 | 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 | 如果你往接口中添加方法,那么你必须改变实现该接口的类 |
什么时候使用抽象类和接口: 如果拥有一些方法并且想让它们中的一些有默认实现,使用抽象类。 如果想实现多重继承,必须使用接口。由于 Java 不支持多继承,子类不能够继承多个类, 但可以实现多个接口。 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口, 那么就需要改变所有实现了该接口的类。
本文详细对比了Java中接口与抽象类的区别,包括参数、默认方法实现、构造器、多继承、速度等方面,帮助读者理解何时应选择使用抽象类或接口。

被折叠的 条评论
为什么被折叠?



