接口:
interface定义
public interface interface{
void wirte();
}
接口的实现必须实现所有的方法
接口中只有没有实现的方法,没有属性
-
接口中没有构造方法(因为接口不是类)
-
接口中的方法必须是抽象的(不能实现)
-
接口中除了static、final变量,不能有其他变量
-
接口支持多继承(一个类可以实现多个接口)
特性:
-
接口里的方法一定是public或者default
-
只提供方法的定义,不实现方法
-
完全抽象的类
-
用implements关键字实现接口,一个类可以实现多个接口,一个接口也可以有多个实现
-
接口不能被实例化 不能有构造方法
-
必须实现接口中的全部方法
抽象类
用abstract修饰 抽象
public abstract Dog{
void wirte();
abstract void Small();
}
特性:
-
有抽象方法一定是抽象类
-
抽象类中不一定只有抽象方法,也可以有具体方法
-
不能被实例化
-
可以有构造方法、普通属性、方法、静态方法等
-
必须重写抽象方法
public abstract class Dod {
abstract void small();
public void big(){
System.out.println("nig");
}
}
class Dog extends Dod{
@Override
void small() {
}
}
区别:
-
是否可以有构造器:
抽象类可以有构造器,但是接口没有构造器
-
可使用的修饰符
抽象类的目的就是被继承:不能用private,可以用public,protected、default
接口只能有public
-
速度
抽象方法比接口速度快
接口慢一点,因为需要时间去寻找在类中实现的方法
-
子类继承的数量
类只能单继承,接口可以多实现
-
普通成员变量
抽象类中可以有普通成员变量、非抽象的普通方法
接口中没有普通成员变量、方法必须都是抽象的
-
应用区别
接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。
而抽象类在代码实现方面发挥作用,可以实现代码的重用