抽象类和接口分别是什么以及它们的联系与区别

抽象类:

1.声明方法的存在而不去实现它的类叫做抽象类;

2.抽象类用于创建一个体现事物基本行为的类,并为该类声明方法,不能在该类中实现该类的情况;

3.抽象类不能被实例化,即抽象类不能创建abstract类的实例,可以创建变量,类型为抽象类,并让它指向子类的一个实例;

4.抽象类不能有抽象构造函数以及抽象静态方法;

5.抽象类的子类为其父类中的所有方法提供实现;

接口:

1.接口是抽象类的变体(是一种能力,是一种约定)

2.接口中所有方法都是抽象的;

3.接口不能被实例化,没有构造方法;

4.实现类必须实现接口所有方法;

5.实现类可以实现多个接口;

6.一个接口不能实现另一个接口,可以继承多个接口;

接口中的变量都是静态常量;

两者相同点:

1.都代表系统的抽象层;

2.都不能被实例化;

3.都能包含抽象方法;

4.用于描述系统提供的服务,不必提供实现;

不同点:

1.在抽象类中可以为部分方法提供默认实现,接口只能包含抽象方法;

2.抽象类便于服用,接口便于代码维护;

3.一个类只能继承一个直接父类,却可以实现多个接口;

4.   1.8版本以后接口可以写普通方法及静态方法,普通方法用default修饰,静态方法不能私有;

猜你喜欢

转载自www.cnblogs.com/liuxianjie/p/12058070.html