在java中,抽象类和接口用于实现抽象,它们之间的区别是什么? 我来介绍一下这篇文章吧。 有一定的参考价值,需要的朋友可以参考,希望对大家有所帮助。
抽象类
抽象类用于捕捉子类的共同特性,即共同点。例如汽车、自行车、电动车,它们都是车,可以有共同的抽象类Vehicle。 不能实例化抽象类、创建对象或仅将其用作子类的超类。
接口
接口是抽象方法的集合。 如果实现了包含类的接口,则继承该接口的所有抽象方法。
注:抽象方法是一种特殊的方法,只有声明,但没有具体实现。
界面只是个形式,本身什么也做不了; 要实现接口,必须确保实现该接口上的方法。
抽象类和接口之间的区别:
1、抽象类可以同时拥有抽象和具体的方法; 另一方面,接口上只有抽象方法。 是抽象方法的集合。 从Java 8开始,还可以具有缺省和静态方法。
2、抽象类不支持多重继承。 一次只能扩展一个类或一个抽象类。 接口支持多继承,可以一次扩展任意数量的接口。
3、抽象类可以具有final、non-final、static和non-static等变量。 接口只有静态变量和最终变量。
4、抽象类可以扩展另一个具体(常规)类或抽象类,并实现Java接口。 一个接口只能扩展另一个Java接口,而接口不能实现抽象类。
5、在抽象类中,关键字: " abstract "是将方法声明为抽象的必填项。 在接口中,关键字: " abstract "是可选的,用于将方法声明为抽象
7、可以使用关键词“extends”扩展抽象类。 一个接口类可以使用关键词“implements”来实现。
8、Java抽象类可以具有受保护的公共抽象方法,可以具有private、protected等类成员。 缺省情况下,Java接口的成员是公共的,并且接口中只有公共抽象方法。