定义方式:
接口:使用interface关键字定义,接口中可以包含抽象方法、默认方法(Java 8及以后版本支持)、静态方法(Java 8及以后版本支持)和常量(默认是public static final修饰的)。
抽象类:使用abstract关键字定义,抽象类可以包含抽象方法和普通方法,可以有构造方法和成员变量。
继承:
Java接口和抽象类
接口:类通过implements关键字实现接口,并需要实现接口中声明的所有抽象方法。一个类可以实现多个接口,实现了接口的类必须遵循接口定义的规范。
抽象类:类通过extends关键字继承抽象类,可以继承一个抽象类。子类继承抽象类后,可以选择性地实现抽象方法,也可以覆盖普通方法。
构造方法:
接口:不能有构造方法,因为接口是纯粹的抽象定义,没有实例化对象的需求。
抽象类:可以有构造方法,子类在实例化时会调用抽象类的构造方法,用于完成初始化操作。
成员变量:
接口:只能包含常量(public static final修饰的成员变量),因为接口是用于定义行为而不是状态。
抽象类:可以包含普通成员变量,并且可以根据需要提供访问和修改这些变量的方法。
多继承:
接口:Java允许一个类实现多个接口,实现了多继承的效果。
抽象类:Java不支持多继承,一个类只能继承一个抽象类。
关系:
接口:用于实现类之间的共享行为,使得不同类可以按照相同的标准进行交互。
抽象类:用于抽象出类之间的共同特征,提供一种公共的基类供子类继承。