个人理解更多还是为了规范问题,赋值给接口参数有两个好处
1.代码规范
2.实现解耦
具体举例理解
package org.example;
interface Device{
//可以玩游戏
void game();
//可以看视频
void video();
}
class Hw implements Device{
@Override
public void game() {
System.out.println("我用华为手机玩游戏");
}
@Override
public void video() {
System.out.println("我用华为手机看视频");
}
}
class Apple implements Device{
@Override
public void game() {
System.out.println("我用苹果手机玩游戏");
}
@Override
public void video() {
System.out.println("我用苹果手机看视频");
}
public void google(){
System.out.println("我可以用苹果上谷歌");
}
}
public class Example4_32 {
public static void main(String[] args) {
Device d = new Hw();//这样是标准方法,因为我不需要知道具体实现方式,
//如果我不用Hw类了,我可以直接修改成Apple类,我的程序没有影响
d.game();
d.video();
Apple apple = new Apple();//如果这样调用,那么我后面的方法掉用都是基于Apple类的,
//比如后面的google方法,如果我这是更改实现类为Hw,那么我还要更改下面的google实现,
//因为Hw类没有这个方法,因为他也不需要有这个方法,不规范。
//如果项目很大,里面混杂的代码很多,那么修改起来就很麻烦,
//如果多人维护,那就不知道哪里有需要改的了。
apple.google();
}
}