没有用多态:每添加一个水果,就要在Juicer这个类里面添加一个run方法,否则无法调用榨汁这个方法,这样代码扩展性太差,不利于管理,所以我们用多态。
public class Main {
/**
* * 榨汁机(Juicer)榨汁的案例
* 分别有水果(Fruit)苹果(Apple)香蕉(Banana)桔子(Orange)榨汁(squeeze)
* @throws IOException
*/
public static void main(String[] args) throws Exception {
Juicer j = new Juicer(); //创建榨汁机
j.run(new Apple());
j.run(new Orange());
}
}
class Apple{
public void squeeze() {
System.out.println("榨出一杯苹果汁儿");
}
}
class Orange {
public void squeeze() {
System.out.println("榨出一杯橘子汁儿");
}
}
class Juicer {
public void run(Apple a) {
a.squeeze();
}
public void run(Orange o) {
o.squeeze();
}
}
多态:将每次新定义一个类就要新调用的方法向上抽取,定义一个父类,在jucier函数里只需调用父类的方法,则子类继承父类时同时继承了这个调用,即不用每次新创建一个子类都需要在juicer里面重新定义一遍run方法。
public class Main{ /** * * 榨汁机(Juicer)榨汁的案例 * 分别有水果(Fruit)苹果(Apple)香蕉(Banana)桔子(Orange)榨汁(squeeze) * @throws IOException */ public static void main(String[] args) throws Exception { Juicer j = new Juicer(); //创建榨汁机
}}interface Fruit {public void squeeze();}class Apple implements Fruit {public void squeeze() {System.out.println("榨出一杯苹果汁儿");}}class Orange implements Fruit {public void squeeze() {System.out.println("榨出一杯橘子汁儿");}}class Juicer {public void run(Fruit f) {f.squeeze();}}j.run(new Apple()); j.run(new Orange());