java进阶(3)--接口
一、基本概念
1、接口为引用数据类型,编译后也是class字节码文件
2、接口是完全抽象的,(抽象类是半抽象的),属于特殊的抽象类
3、接口定义方法:[修饰符列表]interface 接口名{}
4、接口所有元素都是public公开的
5、接口中的public abstract修饰符是可以省略的
6、接口中的抽象方法是不能有方法体的
7、接口中的常量的public static final是可以省略的
8、实现使用implements关键字完成,接口与类之间叫做实现
9、类可以实现多个接口,类似多继承
二、使用注意、举例
1、接口支持多接口继承
2、接口只包含两部分一部分常量,一部分抽象方法
3、当一个非抽象的类实现接口的话,必须将所有抽象方法全部实现
重写抽象方法后正常
4、接口与接口之间进行强制类型转换时,没有继承关系,也可以强转,但可能出现ClassCastException异常
5、extends与implements可以共存,extends在前,implements在后
三、接口在开发中的
1、提高程序扩展性
2、解耦合
3、符合面向对象(接口),符合ocp原则,接口使用多态
4、举例说明
1 package cnblogs; 2 public class TestAdvance04interface02 { 3 public static void main(String[] args) { 4 //创建厨师 5 FoodNeum cooker1=new ChinaCooker(); 6 //创建顾客 7 Customer customer=new Customer(cooker1); 8 //点餐 9 customer.order(); 10 } 11 } 12 class Customer{ 13 //养成封装习惯,顾客里有一个菜单,customer has a Foodnium,但凡is a可以设置为继承,has a可以设置为属性 14 private FoodNeum foodNeum; 15 public Customer(){}; 16 //getter and setter,配合封装使用,是王八的屁股-规定 17 public FoodNeum getFoodNeum() { 18 return foodNeum; 19 } 20 public void setFoodNeum(FoodNeum foodNeum) { 21 this.foodNeum = foodNeum; 22 } 23 //构造方法,用户获取初始,实例化 24 public Customer(FoodNeum foodNeum){ 25 this.foodNeum=foodNeum; 26 }; 27 //提供点餐方法 28 public void order(){ 29 foodNeum.ShiZhiChaoJiDan(); 30 foodNeum.YuXiangRouSi(); 31 } 32 } 33 interface FoodNeum{ 34 void ShiZhiChaoJiDan(); 35 void YuXiangRouSi(); 36 } 37 class ChinaCooker implements FoodNeum{ 38 public void ShiZhiChaoJiDan(){ System.out.println("中餐西红柿炒鸡蛋"); } 39 public void YuXiangRouSi(){ System.out.println("中餐鱼香肉丝"); } 40 } 41 class AmeicaCooker implements FoodNeum{ 42 public void ShiZhiChaoJiDan(){ System.out.println("西餐西红柿炒鸡蛋"); } 43 public void YuXiangRouSi(){ System.out.println("西餐鱼香肉丝"); } 44 }
查看运行结果