接口的基础语法

一、接口怎么定义,语法是什么?

public interface MyMath {double PI = 3.1415926;int sum(int a, int b);int sub(int a, int b);
}

[修饰符列表] interface 接口名{
常量
抽象方法
}

  1. 接口中只包含两部分内容,一部分是常量,一部分是抽象方法。接口中只有这两部分内容。

  2. 接口中所有的元素都是public修饰的。(都是公开的)

  3. 接口中的方法不能有方法体。

接口注意点:

  • 接口也是一一种引用数据类型,编译之后也是一个class字节码文件。
  • 接口是完全抽象的。(抽象类是半抽象。)或者也可以说接口是特殊的抽象类。
  • 接口支持多继承,一个接口可以继承多个接口。
  • 接口中的抽象方法定义时: public abstract修饰符可以省略。
  • 接口中常量的public static final可以省略。
  • 接口和接口之间没有继承关系,但是也能进行强制类型转换(用不到,知道就行),但是运行时可能会出现ClassCastException异常

二、接口在开发中的作用

注意:接口在开发中的作用类似多态在开发中的作用。

多态:面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩张力。

public class Master{public void feed(Animal a){}//面向Animal父类编程,父类比子类更抽象,//所以我们叫面向抽象编程,不要面向具体编程//这样的程序扩张力更强
}

接口:面向接口编程,可以降低程序的耦合度,提高程序的扩展力,符合OCP开发原则。

接口是完全抽象的,有了接口就有了可插拔性,可插拔表示扩展力很强,不是焊接死的。

类似于主板和内存条之间有插槽,这个插槽就是接口,内存条坏了,可以重新换一个,这叫高扩展性。(低耦合度)

FoodMenu接口类,定义两个菜单方法

//菜单
interface FoodMenu {void Menu1();void Menu2();
}

Customer调用类,面向接口调用

//顾客
class Customer{public Customer() {}public Customer(FoodMenu foodMenu) {this.foodMenu = foodMenu;}private FoodMenu foodMenu;public FoodMenu getFoodMenu() {return foodMenu;}public void setFoodMenu(FoodMenu foodMenu) {this.foodMenu = foodMenu;}public void order() {FoodMenu fm = this.getFoodMenu();fm.Menu1();fm.Menu2();}
}

Cook实现类,面向接口编写实现

//中国厨师
//重写两道菜的方法
class Cook implements FoodMenu{@Overridepublic void Menu1() {System.out.println("厨师做的西红柿炒鸡蛋");}@Overridepublic void Menu2() {System.out.println("厨师做的烤鱼");}
}

Cook2实现类,面向接口编写实现

//美国厨师
//重写两道菜的方法
class Cook2 implements FoodMenu{@Overridepublic void Menu1() {System.out.println("牛排");}@Overridepublic void Menu2() {System.out.println("奶酪");}
}

测试类分别实例化Cook、Cook2对象

public class Test {public static void main(String[] args) {FoodMenu cook = new Cook1();Customer customer = new Customer(cook);customer.order();}
}
public class Test {public static void main(String[] args) {FoodMenu cook = new Cook2();Customer customer = new Customer(cook);customer.order();}
}

运行结果

接口的作用总结:

三个字:解耦合!

  1. 面向接口编程,可以降低程序的耦合度,提高程序的扩展力,符合OCP开发原则。
  2. 接口的使用离不开多态机制(接口+多态可以达到降低耦合度的目的)
  3. 任何一个接口都有调用者和实现者,接口可以将调用者和实现者解耦合,
    调用者面向接口调用,实现者面向接口编写实现。

Java 面向对象:接口的理解相关推荐

  1. Java面向对象:接口的学习

    本文介绍了Java中接口的基本语法, 什么是接口, java中的接口 语法规则, 接口的使用,接口的特性,如何实现多个接口,接口间的继承,以及抽象类和接口的区别 Java接口的学习 一.接口的概念 二 ...

  2. java的接口怎么理解_如何理解Java 中的接口

    一.接口(Interface) 在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法.接口并不是类,编写接口的方 ...

  3. Java中接口的理解和使用

    1.接口的理解 package com.example.demo.interfaceClass;/*** 1.我们前面用继承关系,描述了动物.哺乳动物.爬行动物的各种关系* 2.现在我们要描述:飞机. ...

  4. java面向对象思想如何理解

     Java 的核心是面向对象编程 . 所有的 java 程序都是面向对象的. 以前总听老师说 c 语言是面向过程的, c++ 和 java 是面向对象的,这些糊涂老师却从来不说明何为面向过程,何为 ...

  5. 谈谈java面向对象思想_对于Java面向对象思想的理解

    在Java中,除了8种基本数据类型.其他皆为对象! 面向对象主要有 三个基本特征:封装,继承,多态. 封装 主要概念是指:隐藏对象的属性和实现细节,仅对外暴露公共的访问方式.封装是面向对象最基本的特征 ...

  6. java面向对象三大特性理解

    面向对象主要由三大特性: 封装 继承 多态 一.封装定义: 编写一个类就是对数据和数据的操作封装,封装即时隐藏一切可隐藏的东西,只向外界提供最简单的编程接口.(简单的来说在Java中一个文件包下的类文 ...

  7. 我们程序员眼中的对象-看完华华的文章妈妈再也不担心我找不到对象了-Java面向对象编程思想理解系列(1)

    大家好!!!我叫霜华,是一个帅到没天理 骚里骚气,热爱人生与绿色 是一个不像程序员的程序员 作为一个在java这门领域沉迷一年半的人,如今在技术栈广度和深度 还是业务能力在客观层面讲确实进步迅速 (可 ...

  8. C语言与Java怎么沟通_c语言初学指针,对于java面向对象的初理解

    最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...

  9. java c 面向对象比较教程_c语言初学指针,对于java面向对象的初理解

    最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...

  10. Java面向对象三大特征理解

    1.继承 继承是从已有类得到继承信息创建新类的过程.继承提高代码重用性.关于私有属性,官方文档解释:子类不能继承父类的私有属性,但是如果子类中有公共方法操作父类私有属性,则表现出子类可以使用父类的私有 ...

最新文章

  1. 通过配置NFS使Ubuntu和海思3559A板子共享目录
  2. 阿里云文件存储和自我管理的云解决方案的TCO比较
  3. 在JavaScript中使用正好两位小数格式化数字
  4. 如何自学python数据分析-良心整理!学习Python数据分析的正确姿势
  5. SharePoint优秀blog文章汇总
  6. 用ipython 写spark
  7. 打印杨辉三角--for循环
  8. 2021-03-28 收敛性常用一阶微分方程
  9. 使用VMware VSphere WebService SDK进行开发 (三)——获取主机(HostSystem)的基本信息
  10. 收藏属于自己flash类库集工具
  11. kaggle(05)---Event Recommendation Engine Challenge(基础版)
  12. LeetCode 529. 扫雷游戏(广度优先搜索BFS/深度优先搜索DFS)
  13. 智能技术改变淘宝,阿里巴巴首次详解核心商业AI体系
  14. 北理工c语言作业 2048,C语言实现2048小游戏
  15. matlab安装mosek工具包
  16. Win 双网卡上网冲突,网络设置
  17. java订单超时取消设计_订单超时30分钟自动取消
  18. 社保费客户端显示服务器连接异常,社保费客户端登录服务器异常
  19. c语言.jpg图片转成数组_pdf怎么转成jpg最简单 mac
  20. 图片太大怎么压缩变小?

热门文章

  1. C++Builder STL 泛型
  2. 转:PHP开发框架流行度排名:Laravel居首
  3. openssl数字证书常见格式与协议介绍
  4. 一句代码实现批量数据绑定[下篇]
  5. 7-5 列出连通集 (6 分)
  6. 基于链表的两个集合的交集(C++)
  7. Gui+jdbc+mysql实现图书管理
  8. 怎么增加服务器容量,新睿云服务器硬盘容量怎么增加?
  9. mysql 命令 utf8_Mysql 统一设置utf8字符
  10. oracle链接池满了怎么办,Oracle连接数满了