接口 vs 抽象类

经常有朋友迷惑一件事情,抽象类和接口有什么区别?何时使用抽象类,何时使用接口?但从功能来讲,抽象类完全可以代替接口,那为什么还要有接口呢?这一小节来分析这些问题。      这里附带说一个问题, 产生这种疑惑的原因,大多是因为朋友们已经习惯了学习一个东西时,只看其什么样子?怎么用?而不习惯于弄清楚一个东西起源于哪?出现的动机是什么?其实,要想学好、用好任何一个东西,后两个问题更关键一些。
      举个例子,有人发明了吹风机,我们如果只搞清楚其是什么样子——“有个把手,有个吹风筒”,以及怎么用——“打开按钮能吹出热风,关闭按钮就停止了”。如果我们只搞清楚这些,那么我们八成用不对这个东西,为什么?因为我们根本不知道这东西是怎么来的,它为什么要被发明出来。也许我们天天拿他吹脸取暖或吹衣服,还一派洋洋得意以为用的很好的样子。殊不知这东西其实是用来吹头发帮助头发快点干起来的。
      不要笑,这种事经常发生在我们身上。因为在软件开发中,有太多的东西,我们只顾着学习其是什么样子,怎么个用法,也许就像吹风机一样,这些并不复杂,然后我们就把它用到不该用的地方,还以为自己用得很好。
      用不用得好吹风机,不在于是否熟练掌握开开关关,而在于是不是用它吹头发。同理, 任何东西用得好不好,不在于是不是熟练掌握用法,而在于是不是用对了地方。而要想用对地方,就要弄清楚这个东西的“怎么出来的”和“出来是做什么用的”。
      说了挺多,我们回到接口和抽象类的话题上来。
      首先要说明一点,“抽象类(Abstract Class)”和“类(Class)”在哲学意义上没什么区别,其区别仅仅是实现层面上的,即抽象类只不过是一种特殊的类,编程环境强制不准这种类生成实例,哲学意义上两者没有任何区别。所以,从哲学层面讨论“抽象类与接口对比”和讨论“类与接口对比”是等价的。
      类与接口的不同点有以下几点:
      I. 抽象范畴不同。类是对象“体征”的抽象,接口是对象行为的抽象。
      II. 抽象动机不同。抽象出类是为了帮助记忆、认识世界,抽象出接口是为了实现低耦合交互。
      III. 关注不同。类关注共同的体征,接口关注用来交互的行为。
      IV. 存在范畴不同。类存在于抽象层次树上,接口存在于接口网。
      V. 应用范畴不同。类应用于结构范畴,是静态概念,接口应用于运作范畴,是动态概念。
      上面的条目有点学术了,通俗说来,类是从对象实体的的体征范畴上抽象出来的,用来帮助我们记忆、分析世界不同的对象,主要表明对象“什么样子”;而接口是从对象交互时需要的行为中抽象出来的,关注对象交互时需要的行为。
      还是举个例子吧。
      例如,有一群具体的司机和好多辆具体的汽车,我们可以从司机中抽象出“司机”这个类,从汽车抽象出“汽车”这个类,这种抽象是“体征范畴”的,抽象的目的仅仅是帮助记忆、认识,完全和交互没有关系。而当考虑到交互——司机需要驾驶汽车,于是抽象出一个“可驾驶”这个接口。注意,一但“可驾驶”这个接口被抽象出来,就完全和司机以及汽车没有关系了,除了汽车,拖拉机、轮船、飞机都可以实现这个接口,而不一定是司机,会开车的任何人都可以通过“可驾驶”这个接口去驾驶任何实现“可驾驶”接口的东西。这样一来,“驾驶”这种交互就完全取决于这个接口了,这就是“以行为为交互准则的意思”。
      如果明白了这一小节的内容,相信大家再也不会被“接口和类有什么区别?”、“何时使用抽象类,何时使用接口?”这样的问题迷惑了,而可以挥洒自如的在系统中正确使用接口和类。一个方法:拿不准的时候问问自己,这个抽象是体征抽象还是行为抽象?是为了记忆、分析、设计还是为了交互需要?想明白,再下手。


读后感:抽象类是用于使得一类东西的相同的特征得到重用,而接口是规定出一个行为的名称而具体怎么行动要有实现类决定!
必须实现接口中的抽象方法!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值