最近,在网络上随意翻阅到一堆描述类(或者抽象类)和接口之间关系的文章,说的都很不错,这篇文章我觉得写得不错,大家可以先看看:点击查看,毕竟我的这篇随笔是基于这篇文章写的,呵呵。

那篇文章说的是抽象类,一句话:“抽象类定义了你是什么东东,而接口定义了你有什么功能”。也许初看不出来什么端倪,下面看一下我的图解吧。

这是一个以Train(火车)为抽象类(因为“火车”没有一般的,必须给予一定的定义)的基类图,下面三个派生类PassengerTrain(客运火车),FreightTrain(货运火车),他们拥有Train的核心定义(如车轮规格、引擎规格等)。

下面,我们来看看,我们用同样的方法,定义一个抽象类Car,又有三个具体的派生类继承了它的核心定义:

现在,我们要为这些交通工具(暂时用这个词来总称它们吧)添加一些基本功能,我们就加入了两个接口来实现特定的功能,IPassengerCarrier(载客接口)和IHeavyLoadCarrier(载重接口),新的关系图如下:

可以看到,Car的派生类都有一个IPassengerCarrier接口,因为它们都能执行载客的功能,Train的派生类中,正常来说,只有载客火车能拥有载客的功能,自然地它就拥有了IPassengerCarrier接口;再来看载重接口(IHeavyLoadCarrier),正常来说,suv和皮卡(pickup)都有载重(货)的功能,和载货火车一样,它们三个都继承了IHeavyLoadCarrier接口。

上面就是我个人对这两个概念(抽象类和接口)的理解,有很多地方可能会有错误,望大家谅解,呵呵。

转载于:https://www.cnblogs.com/tangjian/archive/2009/01/05/1369455.html

抽象类和接口的关系之我的图解(转自Jack Fan)相关推荐

  1. 抽象类和接口有什么区别

    原文链接: javacodegeeks 转自:对抽象类与接口的一点思考 - Sharehub 很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题. ...

  2. Java11-day02【多态(成员访问、多态转型、内存图解)、抽象类(成员特点)、接口(成员特点)、类和接口的关系、抽象类和接口的区别、综合案例】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  3. 关于类、抽象类和接口的继承关系

    关于类.抽象类和接口的继承关系 Java类的继承是单继承的,就是一个类只能继承一个类,但是可以通过接口来实现多继承,一个类可以实现多个接口.通过这种方式,Java类就可以实现多继承的关系.但是在继承类 ...

  4. Java中抽象类和接口在概念、语法和应用上的区别和关系

    2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...

  5. 抽象类和接口之间的关系

    自学期间查看资料所写,也是看了很多做的总结,能力有限,会出现错误,希望大家指正,谢谢. 1.抽象类是什么 抽象类和具体类是相对的概念."抽象"是一种存在思想逻辑中的概念,而&quo ...

  6. 接口,类与接口的关系,接口与抽象类的区别

    接口 1 接口的概念 与之前学习过的抽象类一样,接口( Interface )在Java中也是一种抽象类型,接口中的内容是抽象形成的需要实现的功能,接口更像是一种规则和一套标准. 2 接口格式 3 接 ...

  7. 【java进阶02:抽象类和接口】类与类之间的关系 抽象类与接口的区别

    目录 抽象类 接口 抽象类 什么是抽象类 /*类---->对象 :实例化 对象---->类 :抽象抽象类:1.什么是抽象类?类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类 ...

  8. Java从入门到放弃09---多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别

    Java从入门到放弃09-多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别 01 多态 多态指的是 ...

  9. C#中抽象类和接口的区别

    一.抽象类:       抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...

最新文章

  1. python hello world重复_从hello world开始学Python
  2. python绘制dotplot
  3. DUBBO:前端调用后端服务返回类名
  4. 20 道 Redis 面试题,面试官能问的都被我找到了
  5. 快读代码level.2
  6. 南方cass字体样式设置_CASS字体设置之方正字库中英文对照表
  7. 不想使用Windows自带远程桌面客户端的另外一种选择
  8. python 判断字符串是否为空
  9. 朋友:趣头条上市了!我:谁?
  10. happen-before原则
  11. c语言 交互式电子白板案例,交互式电子白板案例分析
  12. anisotropy texture filtering
  13. 有一张足够大的纸,它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰的高度。(java实现)
  14. 多多情报通:拼多多推广哪个效果好?有什么推广技巧?
  15. git仓库服务器SSH认证示例
  16. 怎么用计算机表达爱意,不知道如何向心仪的她表达爱意的你 可能需要Zooids这帮小助攻...
  17. 戴尔灵越14电脑U盘重装系统方法分享
  18. eve虚拟机服务器如何配置,EVE-NG在VMware Workstations环境部署 | IT运维网
  19. arma模型_R语言: GARCH模型股票交易量的研究道琼斯股票市场指数
  20. 博图 Portal v16 相关资源

热门文章

  1. 不错的递归题:输入123,返回“321”。 要求必须用递归,不能用全局变量,输入必须是一个参数,必须返回字符串。
  2. java排序算法之冒泡排序
  3. Builder 模式
  4. 数据可视化(三)- Seaborn简易入门
  5. Actor生命周期理解
  6. Spring Mvc Url和参数名称忽略大小写
  7. Clash Royale开发日志
  8. Java_Freemarker
  9. pt-archiver 数据归档bug
  10. android中的线程池学习笔记