如何理解java中实例化接口?

如何理解java中实例化接口?图中的第18行代码,Actionlister不是一个接口吗,为何可以被实例化为实现它的类的实例?这样做的意义是什么?... 如何理解java中实例化接口?图中的第18行代码,Actionlister不是一个接口吗,为何可以被实例化为实现它的类的实例?这样做的意义是什么? 展开
 我来答
dafeiyu
2017-11-30 · 听君歌一曲,琵琶系心弦
dafeiyu
采纳数:75 获赞数:3543

向TA提问 私信TA
展开全部
你好好看看接口是什么,接口定义出来就是为了让类去实现他的方法,其他类调用接口。
意义在于 假如定义一个 animal 接口 , 都有个方法 run ,不同的动物去实现这个接口所出来的结果是不同的,鸡实现这个方法 是两条腿跑,狗实现这个则是四条腿跑。
接口可以理解为定义一个规范,所有的动物只要实现这个接口都必须要有run方法。
引用zhihu上的 说的比较通俗:
接口就是个招牌。
比如说你今年放假出去杭州旅游,玩了一上午,你也有点饿了,突然看到前面有个店子,上面挂着KFC,然后你就知道今天中饭有着落了。
KFC就是接口,我们看到了这个接口,就知道这个店会卖炸鸡腿(实现接口)。
那么为神马我们要去定义一个接口涅,这个店可以直接卖炸鸡腿啊(直接写实现方法),是的,这个店可以直接卖炸鸡腿,但没有挂KFC的招牌,我们就不能直接简单粗暴的冲进去叫服务员给两个炸鸡腿了。
要么,我们就要进去问,你这里卖不卖炸鸡腿啊,卖不卖汉堡啊,卖不卖圣代啊(这就是反射)。很显然,这样一家家的问实在是非常麻烦(反射性能很差)。
要么,我们就要记住,中山路108号卖炸鸡,黄山路45号卖炸鸡(硬编码),很显然这样我们要记住的很多很多东西(代码量剧增),而且,如果有新的店卖炸鸡腿,我们也不可能知道(不利于扩展)。
追问
可是为什么17行中可以用一个接口类型的变量来储存类的实例?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式