抽象类:
1.声明方法的存在而不去实现它的类叫做抽象类;
2.抽象类用于创建一个体现事物基本行为的类,并为该类声明方法,不能在该类中实现该类的情况;
3.抽象类不能被实例化,即抽象类不能创建abstract类的实例,可以创建变量,类型为抽象类,并让它指向子类的一个实例;
4.抽象类不能有抽象构造函数以及抽象静态方法;
5.抽象类的子类为其父类中的所有方法提供实现;
接口:
1.接口是抽象类的变体(是一种能力,是一种约定)
2.接口中所有方法都是抽象的;
3.接口不能被实例化,没有构造方法;
4.实现类必须实现接口所有方法;
5.实现类可以实现多个接口;
6.一个接口不能实现另一个接口,可以继承多个接口;
接口中的变量都是静态常量;
两者相同点:
1.都代表系统的抽象层;
2.都不能被实例化;
3.都能包含抽象方法;
4.用于描述系统提供的服务,不必提供实现;
不同点:
1.在抽象类中可以为部分方法提供默认实现,接口只能包含抽象方法;
2.抽象类便于服用,接口便于代码维护;
3.一个类只能继承一个直接父类,却可以实现多个接口;
4. 1.8版本以后接口可以写普通方法及静态方法,普通方法用default修饰,静态方法不能私有;
原文:https://www.cnblogs.com/liuxianjie/p/12058070.html