为了账号安全,请及时绑定邮箱和手机立即绑定

为什么obsrever定义成了接口,但是subject定义成了父类?

为什么obsrever定义成了接口,但是subject定义成了父类?

正在回答

2 回答

接口和抽象类都是所谓的代码复用时使用。

在使用时,要优先注意继承和接口概念,所有子类是一类事物(有兄弟关系)时,才应该是继承关系,不是一类事物就不要继承改用接口比较好;

当不符合继承条件时,使用接口,接口可以理解为标准,只定义大致方向,不论具体实现的时候使用;

当符合继承条件时,且你至少有一个方法是具体实现的时候,即已知时,可以考虑使用抽象类;

我个人理解是,接口更像是人为定义一系列的行为,是一种赋予的感觉;父类(抽象类)是人为抽取共性,是一种提炼的感觉。

至于优先级,都是看具体情况的,不过接口总体来说是比继承要灵活,毕竟是多实现、单继承。

当然还有接口和继承都用的情况,这能实现更多变的情况。

多写项目,遇到代码重复的时候,就多想想,慢慢就懂得接口和继承的好处和运用了。


3 回复 有任何疑惑可以回复我~
#1

慕粉1149573729

那个抽象类,按定义,应该说至少有一个抽象方法才对
2018-06-19 回复 有任何疑惑可以回复我~

subject里面的方法是目标对象通用的,同时也是清楚的,所以定义成父类,则其具体目标对象就拥有了所有通用方法;

obsrever则是提供一个标准行为updata,是未实现方法,其具体实现方法需要根据具体的观察者行为才能定义,所以应该为接口;

2 回复 有任何疑惑可以回复我~
#1

慕移动6842083 提问者

感谢!我感觉什么时候用接口,什么时候用抽象类,有点迷糊了,接口还是抽象类优先呢?
2018-06-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么obsrever定义成了接口,但是subject定义成了父类?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信