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 |举报|字号 订阅 下面比较一下两者的 ...
随机推荐
- 第五章:深入Python的dict和set
第五章:深入Python的dict和set 课程:Python3高级核心技术 5.1 dict的abc继承关系 class Mapping(Collection): __slots__ = () &q ...
- Coursera课程笔记----C程序设计进阶----Week 3
函数的递归(Week 3) 什么是递归 引入 函数可以嵌套调用:无论嵌套多少层,原理都一样 函数不能嵌套定义:不能在一个函数里再定义另一个函数,因为所有函数一律平等 问题:一个函数能调用它自己吗? 举 ...
- Qt线程池
说明 Qt中可以有多种使用线程的方式: 继承 QThread,重写 run() 接口: 使用 moveToThread() 方法将 QObject 子类移至线程中,内部的所有使用信号槽的槽函数均在线程 ...
- 【带着canvas去流浪(15)】threejs fundamentals翻译系列1-scene graph
示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址:[你要的前端打怪升级指南] 目录 ...
- webpack 和 webpack-cli 安装和使用中出现的问题
因为国内防火墙的原因,建议首先安装 cnpm: 使用 npm install cnpm -g 或者 npm install -g cnpm --registry=https://registry.np ...
- qt-n个数组实现排列组合
例如:现在有一批鞋子,其中颜色有[‘白色’,‘黑色’,‘灰色’]:大小有[‘40’,‘41’,‘42’],样式有[‘板鞋’,‘运动’,‘休闲’],要求写一个算法,实现[[‘白色’,‘40’,‘板鞋’] ...
- 译文:在GraalVM中部署运行Spring Boot应用
GraalVM是一种高性能的多语言虚拟机,用于运行以JavaScript等基于LLVM的各种语言编写的应用程序.对于Java应用也可作为通常JVM的替代,它更具有性能优势.GraalVM带来的一个有趣 ...
- 设计模式之GOF23适配器模式
结构型模式 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的 类结构,用来解决更大的问题 适配器模式adapter 实际生活中的例子:转换器 适配器的两种方式: 1,类适配器(继承) /**需 ...
- 2018-08-27 jq筛选选择器
筛选选择器:为了辅助选择器更简便.快速的找到元素: 1.过滤 eq(n) -> 第n个元素(从零开始) $('h1').eq(2) // 第三个h1 first() -> 第一个元素 la ...
- 让写作省心一点——Markdown和CSS实践
1 引言 今天这篇推送和以往不太一样,乍一看就能发现格式有了变化.没错,这是我专门设计的品牌模板,也就是本公众号以后创作的文章可直接套用,获得一致的风格样式. 除此以外,文章里的全部元素(包括标题.表 ...