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

如何理解java中实例化接口?图中的第18行代码,Actionlister不是一个接口吗,为何可以被实例化为实现它的类的实例?这样做的意义是什么?

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

可是为什么17行中可以用一个接口类型的变量来储存类的实例?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答