一. 抽象类和接口的相同点:
1、代表系统的抽象层;
2、都不能被实例化;
3、都能包含抽象方法。这些抽象方法用于描述系统能提供哪些服务,但不必提供具体的实现;
二、抽象类和接口主要的两个区别:
1、在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,提高代码的可重用性,这是抽象类的优势所在;而接口中只能包含抽象方法;
2、一个类只能继承一个直接的父类,这个父类有可能是抽象类;但一个类可以实现多个接口,这个是接口的优势所在
注解:
JAVA抽象类中是否一定要有抽象方法
抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。
如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。