接口和抽象类的区别,如何选择?
接口interface和抽象类Abstract Class是面向对象编程中两个重要的概念,他们都可以用来实现抽象层。
接口和抽象类的区别:
方法定义:接口和抽象类最明显的区别是,接口只定义了一些抽象方法,在不考虑java8中的default方法情况下,接口只有抽象的方法,没有实现的代码。java8中可以有默认的方法。
修饰符:抽象类中的修饰符可以有public、protected、private和<default>这些,而接口默认修饰符是public。不可以使用其他修饰符。接口中定义类成员变量还必须要初始化。
构造器:抽象类可以有构造器,接口不可以有构造器。抽象类不可以被直接实例化出来,但是构造器也是有意义的,能起到初始化共有成员变量,强制初始化操作等作用。
继承和实现:接口可以被实现,抽象类可以被继承。
单继承和对实现:一个类可以实现多个接口但只能继承一个抽象类。接口支持多重继承,即一个接口可以继承多个其他接口。
职责不同:接口和抽象类的职责不同,接口主要用于指定规范,抽象类的主要目的是为了复用。
浙公网安备 33010602011771号