Java-接口的本质
https://mp.weixin.qq.com/s/tEVw0j18rX2hxt-guXQJ-w
大道至简,本质往往是很朴素的。
本质:
类是主体,接口是主体之间交流沟通的规约。
位置:
1. 主体站两旁,连接接口的管道在两者之间;
2. 接口位于主体侧面;
3. 父类在主体类的头顶上,父类是对子类高一个概念层次的抽象(概念宽泛化);

接口与主体的关系:
1. 两个沟通的主体,一个使用接口,一个实现接口;
2. 接口是动作的集合,实现接口,表明主体有能力执行接口约定的动作;
3. 使用接口的主体不需要实现接口,但需要知道接口:
a. 不知道约定的常量,则两方所指会有所混淆;
b. 不知道方法签名会被拒绝服务;
c. 不知道方法调用顺序,会被拒绝服务;
d. 使用接口的第一步可以是认证,不具备相应信息则会被拒绝;
4. 接口是主体的组成部分:
a. 接口是实现接口的主体的能力;
b. 接口是使用接口的主体的知识,或者说使用接口也是一种能力;
5. 主体可以具有多种能力,进行多种沟通,所以可以实现多个接口;
规约:
基本的:
1. 常量用以约定两方所指是同一个东西;
2. 方法签名以约定如果要对方做什么,需要提供什么;
组合的:
3. 如果沟通需要多个步骤,则需要约定调用方法的顺序;
这种规约Java接口无法实现,需要使用文档来说明和规范;
举例:
1. 主体同学甲和主体同学乙;
2. 主体乙有冰淇淋、冰棍儿,具有卖冰淇淋、冰棍儿的能力;
3. 主体乙把冰淇淋标记为第一种商品,冰棍儿标记为第二种商品;
4. 主体甲有钱;
5. 主体甲知道主体乙卖东西;
6. 主体甲知道第一种商品是冰淇淋;
7. 主体甲把钱给主体乙,并告诉他要买第一种商品;
8. 主体乙确认钱足够,并把第一种商品交付给主体甲;
9. 主体甲拿到冰淇淋;
Java描述:
1. ManJia, ManYi;
2.
interface Seller {
int PRODUCT_BQL = 0;
int PRODUCT_XG = 1;
Product sell(Money money, int productNumber);
}
class ManYi implements Seller {
Product sell(Money money, int productNumber) {
if (isMoneyNotEnough(money)) {
return null;
}
if (productNumber == PRODUCT_BQL) {
return findBQL();
}
}
}
4.
class ManJia {
Money money = Dad.give(100);
ManYi seller = Find.found();
public void buy() {
Product bql = seller.sell(money, Seller.PRODUCT_BQL);
}
}
父类和接口:
1. 父类和接口是不同的概念,概念不同、位置不同;
2. 子类做为一个整体进行抽象,提升一个概念层次(泛化),成为父类;
接口是对子类部分能力的抽象;
3. 父类的概念比子类宽泛,子类在概念上无法脱离父类的范畴:白马始终是马;
接口是实现主体的一种能力,从这种能力的角度看,主体才是接口要表达的概念:
主体乙在卖东西的时候才是Seller;
为什么优先使用接口,而非抽象父类:
1. 优先从某种角度去界定,而非从整体上界定,留有余地,方便扩展;
Java-接口的本质的更多相关文章
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例
转自: http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ...
- 关于Java接口
1 接口的本质 (1)一组有规则的集合: (2)一定视角上的同类事物的抽象:同类事物的概念是相对的 2 接口与抽象类的区别 (1)java不支持类的多继承,但可以实现多个接口: (2)使用动机:抽象类 ...
- java 接口(基础思想一)
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到 ...
- Java接口interface
Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...
- java 接口详解
定义接口 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口.Java 接口本身没有任何实现,只描述 public 行为,因此 Java 接口比 Java 抽象类更抽象化.Jav ...
- [转] Java接口_interface_implements
相对抽象类来讲,接口就是比抽象类还要抽象的抽象类,丝毫不带半点实现的内容.接口可以更加规范的对子类进行约束.接口全面地专业地实现了:规范和具体实现的分离.接口就是规范,定义的是一组规则,提现了现实世界 ...
- Java多态的本质
今天复习了java多态,感觉收获颇多.多态的实现方式有两种,继承父类和实现接口.本质体现在重写上,不同的类重写时体现出不同的特征.编译时和运行时的不同上.编译时只能调用父类的方法,如果调用了子类独有的 ...
- 深入理解Java接口
一.接口的特点 接口中可以有变量和方法,接口中的变量会隐式的指定为public static final变量(并且只能是public static final变量),而方法会被隐式的指定为public ...
- Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?
Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类? 2013-01-05 17:16:09| 分类: JAVA | 标签:java |举报|字号 订阅 下面比较一下两者的 ...
随机推荐
- N - 寿司晚宴 HYSBZ - 4197 状压dp
N - 寿司晚宴 HYSBZ - 4197 推荐题解 这个题目我觉得还是很难的,借助题解写出来的,题解还看了很久,现在还是不是很理解. 首先这个数比较大有500,如果直接就像这个题目S - Query ...
- G - Island Transport 网络流
题目: In the vast waters far far away, there are many islands. People are living on the islands, and a ...
- spring的单元测试
如果spring 4.3.18这个版本的spring要使用junit,需要使用junit的junit-4.12之上的版本.使用这个版本junit的时 候需要引入hamcrest-all的jar包.之前 ...
- 王颖奇 20171010129《面向对象程序设计(java)》第十二周学习总结
实验十二 图形程序设计 理论: 10.1 AWT与Swing简介 10.2 框架的创建10.3 图形程序设计10.4 显示图像 (具体学习总结在最后) 实验: 实验时间 2018-11-14 1.实 ...
- STC8A8K64S4A12通过SPI接口操作基于ST7920的LCD12864液晶模块
文章地址:https://www.cnblogs.com/jqdy/p/12665430.html 1. 硬件连接 1.1 64引脚的STC8A8K64S4A12 使用的是最小核心板,所以引脚皆引出可 ...
- [hdu5254]BFS
题意:如果一个格子的相邻四个格子中存在两个格子被标记,且这两个格子有公共点,那么这个格子也被标记.给定初始的标记状态,求最终有多少个格子被标记了 思路: 依次对每个格子进行处理,看它能否”生成“新的被 ...
- python 一个模块找不到的错误:ModuleNotFoundError
阿刁是一个自动化测试用例,从一出生他就被赋予终生使命,去测试一个叫登录的过程是否合理.他一直就被关在一个小黑屋里面,从来也没有出去过,小黑屋里还被关着其他的同胞,他们身上都捆着两个小袋子. 小黑屋里很 ...
- js Date对象日期格式化
dateFormat(d, fmt) { var o = { 'M+': d.getMonth() + 1, 'd+': d.getDate(), 'h+': d.getHours(), 'm+': ...
- urldecode二次编码
0x01 <?php if(eregi("hackerDJ",$_GET[id])) { echo("not allowed!"); exit(); } ...
- Oracle细粒度审计
场景 管理信息化应用,想审计某张表的数据是否做了删除.Oracle中专门有自带的函数.可以满足这个需求 1.查询审计日志的语句 select timestamp, db_user, os_user, ...