java零基础入门-面向对象篇(十三)  接口(上)

接口很个很重要的知识点,不管是我们使用别人的工具,还是我们自己项目,都会大量的接触到接口。

但是各种教材一上来就是各种规则定义,具体有什么用,不明不白不清不楚,本文带你了解接口到底是个啥玩意。

在说接口之前,很有必要了解一下标准化规范化的概念。

那么,我们从辣条开始吧~

辣条国家标准

前些时看了个新闻,讲的是辣条准备出国家标准,这可是吓得我赶紧多吃了几根辣条压压惊。

这么多的小吃零食,为啥单单就这个辣条要出国家标准?

原来,这是因为某些企业的辣条在当地是完全符合地方标准的,而在别的地方销售,却被定义为不符合国家标准,遭到下架。

在进一步了解新闻,发现,原来在企业当地,辣条执行的是糕点类的地方标准,而在外地,抽检单位对辣条执行的是调味面制品的国家标准

调味面制品国家标准

我们食品药监部门为了大家的健康可是操碎了心,为了大家的身体健康着想,在标准中规定了糖,盐,油的用量,如果太多的糖盐油可是会导致各种疾病的,针对不同的食品类型,专门制定了不同的检验标准。

矛盾的源头

为了让你们好好学java,我专门去研究了辣条有关标准中不同的地方,找到了关键因素,那就是 ---  食品添加剂

山梨酸钾-防腐剂

由于制作好的辣条从生产到被消费者吃掉,中间的时间可能很长,那么就需要添加适量的防腐剂,不然食物变质了,问题就很严重了。这样一来,加也不对,有害健康,不加又不对,事物会变质。所以需要国家标准,规定计量,既不有害健康,也能保证食品不变质。

标准的定义:“标准是对重复性事物和概念所做的统一规定。它以科学、技术和实践经验的综合成果为基础,经有关方面协商一致,由主管机构批准,以特定形式发布,作为共同遵守的准则和依据。”

当一个行业发展到了一定的规模,就会出现一些不守规矩的企业对这个行业造成破坏,比如辣条行业,就被媒体多次曝光黑作坊制作的不合格辣条,对这些害群之马,就需要用标准去约束和规范他们,保证行业的良性发展。

从辣条的标准制定,我们可以发现标准这个东西是非常重要的,如果没有标准,结果一定是混乱的。

标准在代码中的作用

我们对辣条和标准进行一下抽象,国家制定了标准,各个厂家根据这个标准来生成辣条,虽然口味上各有不同,但是他们都是符合辣条标准的产品。

辣条标准

也就是说,标准只是一个抽象的概念,而各个厂家实际生产出来的辣条是具体的实现。

说到抽象概念,有没有想到我们前面说的抽象类,抽象类是专门作为父类给子类继承的,但是这里又有问题了。辣条的标准是有多个的,比如在A地你需要执行的是糕点的标准,在B地你需要执行的是调味面制品的标准。

多个标准

如果按照抽象类的思维来做,会有几个问题

1.辣条和标准可不是继承关系,辣条怎么继承标准?标准不是从辣条抽象出来的,没有办法成为辣条的父类,所以这里是不能用抽象类来定义标准的。

2.假设我们的辣条是子类,糕点和调味面制品是父类,还有一个更大的问题,我要遵守两个标准,就需要用辣条同时去继承糕点和调味面制品,然后再去满足标准,但是我们java里面是不允许多继续啊,我们前面说过,java是单继承,只能有一个直接父类。

抽象与集成

不按规矩办事不但辣条做不好,代码也写不出来了。

那么我们在代码里要怎么解决这个问题?

比抽象类更抽象

问题出现了,我要实现标准,而且是实现多个标准,并且还不能用继承抽象类,怎么办?

天空一声巨响 接口 闪亮登场~

首先来看看大家给接口的封号~

比抽象类更抽象的就是接口

比抽象类还要抽象,我们可以从几个方面去理解他。

从概念层面看,抽象类是对一些有相同特性的类进行的抽象,比如辣条,面筋抽象一下成为调味面制品,但是接口是对抽象概念组成部分的定义。比如上面调味面制品的标准中,定义了水分,脂肪,氯化物,他们都是调味面制品的组成部分

正是因为接口只对抽象事物的组成进行了定义,所以它看上去,要比抽象更加抽象。

再次抽象

从代码层面看,抽象类里面可以实现方法,为子类提供公共方法,而接口里面全部都是抽象方法,不允许实现方法。接口连一个实际的方法都没有,是不是比抽象类更加的抽象?

现在我们看看怎么解决上面那个问题。

辣条A,B,C必须要遵守两个规范,我们直接定义两个接口,一个是糕点类的标准,一个是调味面制品的标准,然后在实际生成辣条A,B,C的时候去实现这些接口就行了。

因为java是允许实现多个接口的,而接口里面又都是抽象方法,一旦实现接口,必须实现接口内所有的抽象方法,这样,就算没有国家标准,你同时满足了糕点标准和面制品标准,也可以放心的销售了。

接口就是定义了一个标准和规范,当你要使用别人的工具代码时,就必须按照别人的要求来。如果你编写了工具代码给别人用,你也可以定义标准让使用者来遵守。

何时使用抽象类 何时使用接口

既然抽象类和接口里面都有抽象方法,那么何时用抽象类?何时用接口?

抽象类的使用场景:如果一批类可以抽象成一个概念,那么使用抽象类,比如在一个OA项目里,各种单据的审批,可以将单据抽象出来做成抽象类,然后有各种具体的单据来继承单据的抽象类。

使用接口的场景:单据必须有创建编号,申请和审批这几个方法,那么可以将单据抽象成接口,如果有新的单据种类,必须先实现单据接口,这样每个单据都必须有了这三个方法。

本章专门从概念方面对接口进行了解读,下一篇我们用代码来说话,看看接口还有有哪些特性。

PS:本来可以早点发,但是觉得没写好,删了重写,耽误了点时间,抱歉。

从辣条国家标准到 java 接口规范相关推荐

  1. 前后端分离 MVC 架构与 Java 接口规范,深入剖析必要性!

    >>号外:关注"Java精选"公众号,回复"面试资料",免费领取资料!"Java精选面试题"小程序,3000+ 道面试题在线刷, ...

  2. Java接口规范的理解

    接口 接口是什么?看到查阅了网上大多数的文章,都说"接口是一种行为规范",这句话初学者理解起来不容易,我也是仔细查阅了一些资料后,略微了解. 百度上规范的定义:约定或规定的标准. ...

  3. resultset遍历取数据_数据放在哪?如何从数据库取数据?

    前言 数据放在数据库内(如:mysql) 如何获取数据,可用JDBC 1. 为什么要了解mysql数据库? 因为实际的生活中,网页里面的内容都不是静止的,会根据你的操作和交互,数据会发生变化 有数据变 ...

  4. 从网络营销辞职转行软件测试,100天的心酸拿到9K,过程都是自己在苦撑,只因我...

    "大学专业是网络营销专业 但是之前一直在事业单位荒废,感觉之前的单位让人懒惰 事儿还贼多,于是裸辞,参加培训班准备转行软件测试 然而学成后没有人要我-" 我为什么会选择转行? 想想 ...

  5. Spring中的事务控制

    Chapter 1. Spring中的事务控制(Transacion Management with Spring) Table of Contents 1.1. 有关事务(Transaction)的 ...

  6. Spring中的事务控制(Transacion Management with Spring)

    1.1. 有关事务(Transaction)的楔子 1.1.1. 认识事务本身1.1.2. 初识事务家族成员 1.2. 群雄逐鹿下的Java事务管理 1.2.1. Java平台的局部事务支持1.2.2 ...

  7. 程序人生:起薪13k,兜兜转转还得是软件测试

    很多人一聊到IT教育培训第一反应就是:为什么要报班呢,网上大把资源它不香吗?自己学一学不就出来找工作了吗?还花这种冤枉钱? 小编作为从业人员认真地说,进入IT行业虽然不是特别难,但也没有这么简单.不然 ...

  8. 程序人生:2023年,软件测试还吃香吗?学软件测试还有前途吗?

    去年因为YQ等各种原因,大厂裁员,失业等等频频受到关注.不解释,确实存在,各行各业都很难,但是,说软件测试行业不吃香,我还真不认同(不是为培训机构说好话,大环境不好,很多企业都提高了门槛,不会乱招人了 ...

  9. 忍不了!我辞退了一个学历造假的程序员。。。

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方留言必回,有问必答! 每天 08:00 更新文章,每天进步一点点... 作为首 ...

  10. Spring中的事务控制学习中(转)

    1.1. 有关事务(Transaction)的楔子 1.1.1. 认识事务本身 1.1.2. 初识事务家族成员 1.2. 群雄逐鹿下的Java事务管理 1.2.1. Java平台的局部事务支持 1.2 ...

最新文章

  1. NCEPU:线下组队学习周报(007)
  2. kafka 基础知识梳理及集群环境部署记录
  3. linux下批量替换文件内容的三种办法
  4. 【面试准备·2】webpack
  5. Spring : Spring @Transactional-嵌套事物回滚
  6. 设计模式原则之六:依赖倒置原则
  7. jq点击更多收起效果
  8. HttpClient模拟客户端请求实例
  9. paip.输入法编程---输入法ATIaN历史记录 v8b
  10. JavaScript,实现这样的情景:阅读协议,阅读完毕后就可以点击同意复选框。
  11. 需求分析——功能需求和非功能需求
  12. 第七章 NoSQL数据库技术(二)
  13. android 11.0 12.0Launcher3禁止拖动图标到Hotseat
  14. android 延时拍照,手机如何延时拍摄 手机延时拍摄技巧有哪些
  15. VMware 安装Ubuntu系统后,启动一直黑屏
  16. python使用execJS运行js函数例子
  17. BUCK电源芯片BST引脚100nF电容的作用
  18. 人工智能:第十章 机器视觉
  19. 【KRKR进阶实用教程】1、捕获鼠标位置——存档界面制作
  20. iOS定位和地理坐标类型解释

热门文章

  1. Android性能优化系列篇(二):启动优化
  2. 计算机英语2000带英标
  3. 微信公众平台接口调试工具json格式不对怎么搞_微信支付、支付宝最全接入指引,看完立刻就可以上手!...
  4. bmp图片格式转化为jpg
  5. Openstack Cinder Ceph(RBD)备份恢复过程(backup/restore)
  6. 计算机显卡更新,电脑显卡怎么升级,电脑显卡升级方法图解
  7. 励志:滴滴打车CTO张博:生死战役,技术和时间赛跑
  8. Linux实战——Shell编程练习(更新12题)
  9. 聚合数据手机话费充值API,话费充值功能接入
  10. IB心理学社会文化介绍