首页   注册   登录
 Wangjl 最近的时间轴更新

Wangjl

V2EX 第 365090 号会员,加入于 2018-11-22 20:51:53 +08:00
Wangjl 最近回复了
@otakustay 哈哈哈,好像是这么回事。
new 对象时用其接口类型变量来接收,这么做的好处是
1.统一规范
例如:我定义了一个接口,里面有 a、b、c 三个方法
然后别人实现了该接口
如果我用
实现类 对象名 = new 实现类 这种方式 new 对象
此时如果实现类中还定义了 d 方法,就可以通过该对象调用 d 方法
如果此时是多人开发的场景,我们发现实现类 d 方法有问题。然后别人就重写了该实现类,例如删除或修改了 d 方法
此时调用 d 方法的地方,我们全部都需要删除或修改

而如果是用接口作为接收类型创建的对象:
本身该接口就是我们定义的,我们明确知道我这个功能只需要 a、b、c 这三个方法
这时候,你拿去实现。你实现类中还定义了一个 d 方法
但我 new 对象的时候,用接口来接收,这样我就不管你实现类里实现了什么特有方法,我都不关心
我用接口接收,这样就只能调用我接口中定义的 a、b、c 三个方法,这样以后你实现类再改变
我都不需要去改变我的对象的调用
这样做的好处就是,限定只能调用接口中的方法。

不知道我这么理解对不对。
按照
@lhx2008
@MikeLei
两位的说法,好像是和修改实现类后,不需要修改接口什么的有关。

那么,比如
```
接口类型 变量 = new 实现类 # 这种方式如果我修改了实现了,会有什么方便的地方? 或者说有什么好处
实现类类型 变量 = new 实现类 # 这种如果修改了实现类,会有什么不方便的地方吗?
```

没理解懂。
感觉还是好绕,没听懂呢。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2003 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 15ms · UTC 09:44 · PVG 17:44 · LAX 02:44 · JFK 05:44
♥ Do have faith in what you're doing.