【框架】继承和实现基础的认识

根据封装好的jar包,想要实现接口下的某个方法的时候,但是如果直接用普通类去实现,那一定是要实现所有接口的,那么通过什么样子的封装,可以看上去只实现了接口的部分方法?

一、宏观看demo—UML图:


在这里插入图片描述

二、拆解

我把上面的UML进行拆解,拆解除了如下的内容

具体代码:

1、抽象类实现接口 (对比普通类实现接口)

图一:在这里插入图片描述
图二:
抽象类

如上图所述,如果是普通类实现接口,那么是一定要实现接口下的所有方法的;但是抽象方法实现接口则不同,原因如注释

2、子接口继承父接口

接口之间是可以继承的,接口是特殊的类

图一:在这里插入图片描述
图二:
在这里插入图片描述

不仅仅是接口间继承,类和类间的继承也是一样的,这完全符合设计模式中的里式替换规则:任何类可以出现的地方,其子类一定可以出现。可以理解成子类可以替换父类。
那么再进一步看看下一个例子是不是满足我们的猜想:

3、普通类继承抽象类(显式继承,隐式继承)

图一:在这里插入图片描述
图二:
在这里插入图片描述
从图中可以看到,抽象方法是一定要被重写的,就像接口中的方法一样。(上面也提到,接口中的方法默认是用public abstract修饰的);其他抽象类的方法,是可以选择性的重写的。
但是怎么证明子类继承了父类的方法呢?
在这里插入图片描述

这里涉及到了继承中的两个概念,显式继承和隐式继承,如图中phone和car放 是被子类重写了的,但是computer方法没有,但是并不影响store调用这个方法。
综上:可以看到,是满足我们上述的猜测,继承:正是顾名思义,继承下来父亲的所有方法,只是有显隐之分
那么是不是可以利用继承的隐式特点,让普通类通过继承抽象类;利用抽象类实现接口的特点,让抽象接口实现接口,就可以实现我们初始的想法。

4、普通类继承,实现接口的,抽象类

图一:
在这里插入图片描述

图二:
在这里插入图片描述
图三:
在这里插入图片描述

至此,已经实现了我们一开始的想法,通过抽象类,在普通类和接口之间进行的了一层“隔离”

现在我们如果想要拓展普通类的方法,可以通过接口继承的方式来实现,如下,比如拓展一个ITBook的方法:

5、普通类实现,继承父接口的,子接口

如上第2个测试,通过普通类的实现可以拓展其Factory的方法
在这里插入图片描述
PS:另外,除了接口间继承,还可以直接让普通类多实现接口,也是可以达到目的
这也正是设计模式中的接口隔离的实现:类不应该依赖它不需要的接口,一个类对另外一个类的依赖应该建立在最小的接口上。
好神奇,发现很多知识都是相通的。

6、普通类同时进行4.5步继承和实现

整合一下上面的所有内容,也就是实现一下文章最前的UML图
两个接口图略(如上2例子)
图一:
在这里插入图片描述

图二:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邢美玲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值