接口和抽象类的区别有哪些

2023-02-18 09:30:25
接口和抽象类都是用来定义对象的公共行为的,但二者有以下 7 点不同: 区别1:定义关键字不同 接口使用关键字 interface 来定义。 抽象类使用关键字 abstract 来定义。 区别2:继承或实现的关键字不同 接口使用 implements 关键字定义其具体实现。 抽象类使用 extends 关键字实现继承。 区别3:子类扩展的数量不同 一个类只能继承一个父类(单继承),但可以实现多个接口。 区别4:属性访问控制符不同 接口中属性的访问控制符只能是 public,抽象类中的属性访问控制符无限制。 区别5:方法控制符不同 接口中方法的默认控制符是 public,并且不能定义为其他控制符; 抽象类中的方法控制符无限制,其中抽象方法不能使用 private 修饰。 区别6:方法实现不同 接口中普通方法不能有具体的方法实现。但JDK 8 中static 和 default 方法必须有方法实现; 抽象类中普通方法可以有方法实现,抽象方法不能有方法实现。 区别7:静态代码块使用不同 接口中不能使用静态代码块,抽象类中可以使用静态代码块。