我们都知道在Java中一个子类只能继承一个父类,当一个子类拥有多个父类时我们该怎么办呢?这时Java就引入了接口的概念。接口由关键字interface定义,语法如下:
[访问修饰符]interface 接口名 [extends 父接口1,父接口2---]
注意:
接口和抽象类的区别:
相同点:
不同点:
实例:
(1)创建食物接口(Food),该接口被所有的食物类所实现。在该接口中定义getFood()方法。
(2)创建麦香鸡类(McChicken) ,该类实现Food接口,并重写Food接口的getFood)方法。
(3)创建薯条类(Chips) ,该类实现Food接口,并重写Food接口的getFood)方法。
(4)创建生产食品的工厂类(FoodFactory) ,在该类中定义静态方法createFood(String type)方法,在该方法中通过传入该方法参数的字符串值,判断用户需要何种食物,如果工厂中有该食物,则创建该食物对象,否则给出友好提示信息。参考代码如下:
package com.zuoye; public interface Food { void getFood(); }
package com.zuoye; public class McChicken implements Food{ @Override public void getFood() { System.out.println("来一份麦辣鸡块"); } }
package com.zuoye; public class Chips implements Food{ @Override public void getFood() { System.out.println("来一份薯条"); } }
package com.zuoye; public class FoodFactory { public static Food createFood(String type) { if(type.equals("mcchicken")) { return new McChicken(); }else if(type.equals("chips")) { return new Chips(); }else { System.out.println("对不起,没有该食物"); return null; } } }
package com.zuoye; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Food mcchicken=FoodFactory.createFood("mcchicken"); mcchicken.getFood(); Food chips=FoodFactory.createFood("chips"); chips.getFood(); } }
运行结果如下: