接口基本语法以及在开发中的应用

接口基础语法:

是一种引用数据类型;

接口是完全抽象的;

定义:【修饰符列表】 interface 接口名{}

接口支持多继承;接口也可以使用多态;

接口中只包含两部分:常量和抽象方法。

接口中所有元素都是public修饰的,但抽象方法定义时,public static 可以省略;

    interface A{
//public abstract int sum();
      int sum(int a,int b);}

接口中的常量,public static final可以省略

//double pi=3.1415926;与下面一样(在接口中,默认为常量,会自动添加public static final)
  public static fina double pi=3.1415926;

当一个非抽象类实现(implements)接口的时候,必须将接口中的抽象方法重写(覆盖)。

一个类可以实现多个接口,弥补了Java中单继承的缺陷;

接口与接口之间也可以强转,即使没有关系;编译没问题,但运行可能会报错ClassCastException, 还是要加instanceof判断;(向下转型要有好习惯,加instanceof判断)

psvm{
A a=new C();
if(a instanceof B){
  B b=(B)a;
}
}
interface A{void m1();}
interface B{void m2();}
class C implements A{
public void m1(){}
}

继承和实现同时存在:(先extends后implements)

class Bird extends Animals implements Fly{}

 

接口在开发中的作用:

接口在开发中的作用类似于多态在开发中的作用。(多态:面向抽象编程,降低程序的耦合度,提高扩展力)(OCT原则:对扩展开放,对修改关闭)

例如:小明去饭馆吃饭,这个过程中的接口是什么?

菜单是接口;小明面向菜单点菜(调用接口);厨师做菜(实现接口)。

菜单让顾客和厨师的耦合度降低,他们之间完全依靠“抽象的菜单”来沟通。

接口的使用离不开多态;

 

代码实例:(顾客点菜)

public class JieKouTest {
  public static void main(String[] args) {
      Menu ck=new ChinaCook();
      Menu wk=new WesternCook();
      Customer customer=new Customer(wk);//两者结合的重要代码
      customer.order();
  }
}
class ChinaCook implements Menu{
  public void jiDan(){
      System.out.println("中国鸡蛋");
  }
  public void tuDouSi(){
      System.out.println("中国土豆丝");
  }

}
class WesternCook implements Menu{
  public void jiDan(){
      System.out.println("西方鸡蛋");
  }
  public void tuDouSi(){
      System.out.println("西方土豆丝");
  }
}
interface Menu{
  void jiDan();
  void tuDouSi();
}
class Customer{
  private Menu menu;
  public void order(){
      menu.jiDan();
  }
  public Menu getMenu() {
      return menu;
  }

  public void setMenu(Menu menu) {
      this.menu = menu;
  }

  public Customer() {
  }

  public Customer(Menu menu) {
      this.menu = menu;
  }
}

 

上一篇:GTK+入门教程


下一篇:React ProLayout组件自定义菜单导航menuDataRender不显示问题解决方案,React : cannot add property 'X', object is