关于类抽象类和接口的继承关系

Posted 颜子歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于类抽象类和接口的继承关系相关的知识,希望对你有一定的参考价值。

关于类、抽象类和接口的继承关系

一、类和抽象类

当实体类Impl继承一个抽象类Abstract,该实体类Impl可以不用实现抽象类Abstract中的所有方法,但是必须实现抽象类中的所有抽象方法

 

二、类和接口

当实体类Impl直接实现接口Interface,那么该实体类Impl必须是想接口Interface里面的所有接口方法

 

三、抽象类和接口

当抽象类Abstract实现接口Interface,抽象类可以实现接口中的部分接口方法,也可以完全不实现任何接口方法。

理解:因为抽象类的功能类似接口,都是给某种行为或者流程提供统一的抽象的规范,两者的目的都不是去具体实现具体操作,具体的操作需要不同实体类去实现。

 

四、上面都是只设计两者之间关系的情况,当涉及三者之间关系的时候,情况稍微复杂,但是当你理解实体类、抽象类和接口的存在的目的和意义也就很容易理解

实体类Impl extends 抽象类Abstract implements 接口Interface(注:下面所有情况中抽象类Abstract都不用显式实现接口Interface:即不需要在抽象类Abstract中写Abstract implements Interface,只要方法是实现即可<即:方法的访问权限,修饰词,返回参数,参数列表一样>)

1、 如果抽象类Abstract实现了Interface中的部分方法,那么实体类Impl需要实现抽象类Abstract没有实现Interface中的接口。

例:Interface有三个方法

public void getUp();

public void washFace();

public void eatBreakfast();

Abstract只实现了Interface中的一个方法getUp(),那么Impl就需要实现剩下的两个方法washFace()和eatBreakfast()

2、 如果抽象类Abstract没有实现Interface中的任何方法(当然这种情况在工作中很少遇到,这样Abstract就失去了存在的意义),那么Impl就必须实现接口中的所有方法。

3、 如果抽象类Abstract实现Interface中的所有方法,那么实体类Impl就可以选择性的实现接口Interface中需要的方法

 

五、实体类继承实体类然后实现接口

实体类AImpl extends 实体类BImpl implements 接口Interface

情况和上面类似(这只是实体类,抽象类和接口关系的一种变化形式)

说明:BImpl不用显式实现接口Interface,只要方法是实现接口Interface的方法即可

 

总结:抽象类和接口的功能是给相似行为或者功能提供统一规范,不用具体实现某种操作。实体类无论是继承还是实现接口,或者是多继承,只要上层没有被实现的接口或者抽象方法都必须被实现。

以上是关于关于类抽象类和接口的继承关系的主要内容,如果未能解决你的问题,请参考以下文章

关于基类和派生类之间的关系

java 抽象类和接口的区别

java抽象类和接口

抽象类和接口的异同点

抽象类和接口的区别

继承 多态 抽象类 接口等学习内容总结