Java 面向对象:接口的理解
接口的基础语法
一、接口怎么定义,语法是什么?
public interface MyMath {double PI = 3.1415926;int sum(int a, int b);int sub(int a, int b);
}
[修饰符列表] interface 接口名{
常量
抽象方法
}
接口中只包含两部分内容,一部分是常量,一部分是抽象方法。接口中只有这两部分内容。
接口中所有的元素都是public修饰的。(都是公开的)
接口中的方法不能有方法体。
接口注意点:
- 接口也是一一种引用数据类型,编译之后也是一个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();}
}
运行结果
接口的作用总结:
三个字:解耦合!
- 面向接口编程,可以降低程序的耦合度,提高程序的扩展力,符合OCP开发原则。
- 接口的使用离不开多态机制(接口+多态可以达到降低耦合度的目的)
- 任何一个接口都有调用者和实现者,接口可以将调用者和实现者解耦合,
调用者面向接口调用,实现者面向接口编写实现。
Java 面向对象:接口的理解相关推荐
- Java面向对象:接口的学习
本文介绍了Java中接口的基本语法, 什么是接口, java中的接口 语法规则, 接口的使用,接口的特性,如何实现多个接口,接口间的继承,以及抽象类和接口的区别 Java接口的学习 一.接口的概念 二 ...
- java的接口怎么理解_如何理解Java 中的接口
一.接口(Interface) 在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法.接口并不是类,编写接口的方 ...
- Java中接口的理解和使用
1.接口的理解 package com.example.demo.interfaceClass;/*** 1.我们前面用继承关系,描述了动物.哺乳动物.爬行动物的各种关系* 2.现在我们要描述:飞机. ...
- java面向对象思想如何理解
Java 的核心是面向对象编程 . 所有的 java 程序都是面向对象的. 以前总听老师说 c 语言是面向过程的, c++ 和 java 是面向对象的,这些糊涂老师却从来不说明何为面向过程,何为 ...
- 谈谈java面向对象思想_对于Java面向对象思想的理解
在Java中,除了8种基本数据类型.其他皆为对象! 面向对象主要有 三个基本特征:封装,继承,多态. 封装 主要概念是指:隐藏对象的属性和实现细节,仅对外暴露公共的访问方式.封装是面向对象最基本的特征 ...
- java面向对象三大特性理解
面向对象主要由三大特性: 封装 继承 多态 一.封装定义: 编写一个类就是对数据和数据的操作封装,封装即时隐藏一切可隐藏的东西,只向外界提供最简单的编程接口.(简单的来说在Java中一个文件包下的类文 ...
- 我们程序员眼中的对象-看完华华的文章妈妈再也不担心我找不到对象了-Java面向对象编程思想理解系列(1)
大家好!!!我叫霜华,是一个帅到没天理 骚里骚气,热爱人生与绿色 是一个不像程序员的程序员 作为一个在java这门领域沉迷一年半的人,如今在技术栈广度和深度 还是业务能力在客观层面讲确实进步迅速 (可 ...
- C语言与Java怎么沟通_c语言初学指针,对于java面向对象的初理解
最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...
- java c 面向对象比较教程_c语言初学指针,对于java面向对象的初理解
最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...
- Java面向对象三大特征理解
1.继承 继承是从已有类得到继承信息创建新类的过程.继承提高代码重用性.关于私有属性,官方文档解释:子类不能继承父类的私有属性,但是如果子类中有公共方法操作父类私有属性,则表现出子类可以使用父类的私有 ...
最新文章
- 通过配置NFS使Ubuntu和海思3559A板子共享目录
- 阿里云文件存储和自我管理的云解决方案的TCO比较
- 在JavaScript中使用正好两位小数格式化数字
- 如何自学python数据分析-良心整理!学习Python数据分析的正确姿势
- SharePoint优秀blog文章汇总
- 用ipython 写spark
- 打印杨辉三角--for循环
- 2021-03-28 收敛性常用一阶微分方程
- 使用VMware VSphere WebService SDK进行开发 (三)——获取主机(HostSystem)的基本信息
- 收藏属于自己flash类库集工具
- kaggle(05)---Event Recommendation Engine Challenge(基础版)
- LeetCode 529. 扫雷游戏(广度优先搜索BFS/深度优先搜索DFS)
- 智能技术改变淘宝,阿里巴巴首次详解核心商业AI体系
- 北理工c语言作业 2048,C语言实现2048小游戏
- matlab安装mosek工具包
- Win 双网卡上网冲突,网络设置
- java订单超时取消设计_订单超时30分钟自动取消
- 社保费客户端显示服务器连接异常,社保费客户端登录服务器异常
- c语言.jpg图片转成数组_pdf怎么转成jpg最简单 mac
- 图片太大怎么压缩变小?