11. 接口和抽象类的区别
时间: 2024-03-25 21:31:01 浏览: 21
1.实现方式:抽象类可以有抽象方法和非抽象方法,而接口只能有抽象方法。
2.继承:一个类只能继承一个抽象类,但是可以实现多个接口。
3.构造函数:接口没有构造函数,而抽象类可以有构造函数。
4.变量:抽象类可以有普通变量,而接口只能有常量。
5.默认实现:抽象类可以提供默认实现,子类可以选择性地覆盖它们,而接口只能定义方法,但不能提供默认实现。
6.目的:抽象类的目的是为了让子类继承它,并且可以使用它的方法和变量;而接口的目的是为了让不同的类实现它,并且实现相同的方法。
7.使用场景:抽象类适用于一组类共享相同的行为和属性的情况,而接口适用于不同的类实现相同的方法。
8.继承关系:抽象类和它的子类之间是 is-a 的关系,而接口和实现它的类之间是 has-a 的关系。
相关问题
33.接口和抽象类的区别
接口和抽象类的区别主要有以下几点:
1. 方法实现:接口中的所有方法都是抽象的,只能定义方法而不能实现;而抽象类可以定义抽象方法,也可以实现方法。
2. 继承和实现:抽象类需要被子类继承,而接口需要被类实现。一个类只能继承一个抽象类,但可以实现多个接口。
3. 成员变量和方法:接口中的成员变量都是公共的静态常量,而抽象类中的成员变量可以是普通变量。接口中的方法都是公共抽象的,而抽象类可以有抽象方法也可以有普通方法。
4. 抽象方法和抽象类:抽象方法只能声明而不能实现,而抽象类可以有抽象方法也可以没有。
5. 实例化:抽象类和接口都不能直接实例化,需要通过子类或实现类来实例化。
综上所述,接口强调的是功能和能力,只能定义抽象方法和静态常量;而抽象类强调的是所属关系,可以定义抽象方法和普通方法,也可以有成员变量。
#### 引用[.reference_title]
- *1* [接口和抽象类有什么区别](https://blog.csdn.net/weixin_33953384/article/details/91866798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [接口与抽象类的区别](https://blog.csdn.net/Rowley123456/article/details/109020901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [接口和抽象类的区别](https://blog.csdn.net/qq_58772217/article/details/121542021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
3.接口和抽象类有什么区别?default关键字有什么作用?
接口和抽象类有以下区别:
1. 接口中所有的方法都是抽象方法,而抽象类中可以有抽象方法和非抽象方法。
2. 接口中不能有实例变量,而抽象类可以有实例变量。
3. 接口中的方法默认是 public 的,而抽象类中的方法可以是 public、protected 或者默认的(package-private)。
4. 一个类只能继承一个抽象类,但可以实现多个接口。
default 关键字在接口中的作用是定义默认方法。默认方法是一种在接口中提供实现的方法,可以在实现接口的类中直接调用,而不需要重新实现。默认方法可以有方法体,但必须使用 default 关键字进行修饰。默认方法可以被覆盖。