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 }

查看运行结果

 

 

 
 
posted @ 2020-08-02 22:56  Mrwhite86  阅读(162)  评论(0编辑  收藏  举报