Abstract(抽象)与Interface(接口)的区别
声明方法的存在而不去实现它的类被叫做抽象类(abstrace class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例,即不能abstract类中,实现abstract方法;但是可以实现非abstract的方法。可以创建一个变量,其类型是一个抽象类,并让它指向具体了类的一个实例。不能有抽象构造函数或抽象静态方法。abstract类的子类为它们的父类中的所有抽象方法提供实现,否则它们也是抽象殴打。可以在子类中重写父类的方法。
abstract资料参考我的Java中的abstract类
接口(Interface)是抽象类的变体。在接口中,所有的方法都抽象的,没有一个有程序体。多继承性可以通过实现这样的接口而获得。接口只可以定义static final成员变量。由于有抽象类,它允许使用接口名作为引用变量的类型,引用的变量必须有一个对象进行接收,否则会出现编译错误。instanceof运算符(关键字)可以用来决定某对象的类是否实现了接口,用法:System.out.println(p instanceof Person);,其中p是子类,Person是接口,结果返回boolean值。
总结:
1、共同点
两者都是抽象类,都不能实现化
Interface实现类和abstract继承类都必须实现抽象方法
2、不同点
Interface(接口)需要实现,用implements;abstract(抽象)需要继承,用exends
一个类可以实现多个Interface;一个类只能继承一个abstract
Interface强调功能的实现;abstract强调从属关系
Interface的所有抽象类都只有声明没有方法体;abstract抽象方法可以选择实现,也可以选择继续声明为抽象方法,无需实现,留给子类去实现
3、Interface的应用场合
类与类之间需要特定的接口进行协调,而不在乎其如何实现
本文详细解析了Java中抽象类(abstract class)与接口(interface)的区别,包括它们的定义、使用方式及应用场景。强调了抽象类适用于定义部分实现的行为模板,而接口则侧重于定义类之间的交互规范。
1207

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



