软件设计模式中经常看到这句话,而且出现频率很高,但是实际经验不多,所以不好理解,直接上代码(红色字体为针对接口编程和针对实现编程对比)
interface Animal {
void eat();
}
//接口实现
class Dog implements Animal {
public void eat() {
System.out.println("dog eat");
}
}
//接口实现
class Cat implements Animal {
public void eat() {
System.out.println("cat eat");
}
}
public class Main {
//面向接口编程----------针对接口编程
public static void who_eat (Animal animal) {
animal.eat();
}
public static void main(String[] args){
who_eat(new Cat());
}
//面向实现编程
// public static void main(String[] args) {
// Animal myDog = new Dog();
// Animal myCat = new Cat();
// myDog.eat();
// myCat.eat();
// }
}
编译javac Main.java
java Main