抽象类与接口的区别

抽象类:com.lzz.base.AbstractDemo
1、如果类被声明为abstract,方法不一定要abstract,但如果方法声明为abstract,类必须是abstract
2、声明为abstract的方法不能有方法体
3、final与abstact不能同时修饰类
4、抽象类不能被实例化,但可以有构造器
5、继承某抽象类的子类,除非子类也是抽象类,否则必须实现抽象类中的抽象方法
6、抽象类可以继承一个类和实现多个接口
7、default不能修饰方法,因为它只能在接口中使用

接口:com.lzz.base.ITest
1、接口中的方法不能用protected、private,并且没有必要用public修饰,默认是public
2、default和static方法必须要有方法体,并且可以有多个default或static方法
3、接口不能有构造器

区别:
1、都可以有方法实现,但接口中的方法只能是default或static
2、抽象类可以有构造器,接口没有
3、抽象类比接口的速度要快,因为接口需要查找实现该接口的类
4、抽象类中可以有main方法,接口中没有
5、如果添加新方法时,抽象类可以直接添加一个方法实现,而接口需要改动所有实现它的类
原文地址:https://www.cnblogs.com/goodbye-lazy/p/10192903.html