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

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

Java类的继承是单继承的,就是一个类只能继承一个类,可是能够经过接口来实现多继承,一个类能够实现多个接口。经过这种方式,Java类就能够实现多继承的关系。可是在继承类和实现接口的时候,存在多方法的实现,下面就是介绍关于多继承的方法实现问题。设计

 

1、类和抽象类继承

当实现类Impl继承一个抽象类Abstract,该实现类Impl能够不用实现抽象类Abstract中的全部方法,可是必须实现抽象类中的全部抽象方法接口

 

2、类和接口get

当实现类Impl直接实现接口Interface,那么该实现类Impl必须是想接口Interface里面的全部接口方法ast

 

3、抽象类和接口权限

当抽象类Abstract实现接口Interface,抽象类能够实现接口中的部分接口方法,也能够彻底不实现任何接口方法。方法

理解:由于抽象类的功能相似接口,都是给某种行为或者流程提供统一的抽象的规范,二者的目的都不是去具体实现具体操做,具体的操做须要不一样实现类去实现。im

 

4、实现类继承首相类而后实现接口总结

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

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

一、 若是抽象类Abstract实现了Interface中的部分方法,那么实现类Impl须要实现抽象类Abstract没有实现Interface中的接口。

例:Interface有三个方法

  public void getUp();

  public void washFace();

  public void eatBreakfast();

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

二、 若是抽象类Abstract没有实现Interface中的任何方法(固然这种状况在工做中不多遇到,这样Abstract就失去了存在的意义),那么Impl就必须实现接口中的全部方法。

三、 若是抽象类Abstract实现Interface中的全部方法,那么实现类Impl就能够选择性的实现接口Interface中须要的方法

 

5、实体类继承实体类而后实现接口

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

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

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

 

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

相关文章
相关标签/搜索