ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-04-14 20:34:25  阅读:96  来源: 互联网

标签:menu void 接口 class 语法 应用 Menu public


接口基础语法:

是一种引用数据类型;

接口是完全抽象的;

定义:【修饰符列表】 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;
  }
}

 

标签:menu,void,接口,class,语法,应用,Menu,public
来源: https://www.cnblogs.com/ljs1539157996/p/14659730.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有