大家也许都知道做工艺器或是工厂里做生产某些产品的模具模具。如做一个金属的五角星,只要将钢水罐到五角星的模具模具里就可以很容易地制做五角星。

我们也可以将类比喻成做五角星的模具。  而生产出的一个个五角星就是一个个对象。 为了建立不同的对象(有的是金属的、有的塑料的,等等),可通过向模具里灌入不同的液态材料就可以制做。这也相当于向类的构造方法中传入不同的参数(相当于不同的液态材料)。

还有就是接口,如果说类是对象的抽象,那么接口就是类的抽象。
我们也可以将接口看成是制做这个五角星模具的规格列表(相当于接口中的抽象方法)。也就是说,只有这个模具(类)符合(实现)相应的规格(接口),才会成为制做五角星的模具模具。

哈哈,当然,这个使用模具生成五角星及其他产品的工厂可以看成是对象工厂。

class ObjectFactory
{
    public static 五解星 create五角星() {}
   
    public static 圆 create圆() {}

public static 椭圆 create椭圆() {}
    
}

也就是说,类和接口都不是实际的产品,都不能拿来用,类相当于模具(没人会拿模具模具在商店里卖吧,估计只有对象工厂会买),而接口只相当于制做模具的规格列表,如尺寸、角度等。而这些规格列表的内容需要在具体类中实现才可能成为具体的模具,如长度和宽度,如果在类中实现为长度等于宽度,那么这个类就成为一个成方形的模具,如果长度不等于宽度,就是一个长方形的模具。然后再实例化这个模具(类),就生成出一个个正方形或长方形对象。

在面向对象理论中还有一个抽象类,这个抽象类其实就相当于一个半成品的模具。如只实现在长度和宽度(相当于在抽象类中已实现的方法),并没有实现深度(这个深度相当于抽象类中的抽象方法,这个抽象方法需要在抽象类的子类中实现)。所以这个模具就是半成品了。因此,是无法直接拿半成品的模具(抽象类)去生产(实例化)产品(对象)的。

接口、类、抽象类、对象的另类解释相关推荐

  1. 接口类抽象类 封装

      接口类抽象类: 第一版,不好,没有统一化设计,第二版解决. class QQ:def pay(self,money):print('您用qq支付了%s元' % money)class Ali:de ...

  2. php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别

    /** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...

  3. c++远征之多态篇——纯虚函数和抽象类、接口类

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.纯虚函数 没有函数体: =0: 即只有函数声明,而没有函数定义的虚函数,是纯虚函数. 2.抽象类 概念:含有纯虚函数的类,叫抽象类. 抽象类无 ...

  4. 面向对象 抽象类与接口类

    ############  复习 ############### - 先抽象再继承 ########## 接口类与抽象类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码 ...

  5. Java接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)

    前言引入 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 我的 ...

  6. 面向对象的接口类 以及鸭子类型

    1.接口类,抽象类. 2.鸭子类型(Python多态)(Python三大特性之一)Python封装 1.接口类和抽象类只是在工作中书写的一种规范. class QQ: def  pay(self,mo ...

  7. day24-抽象类与接口类

    接口类 1.继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类 ...

  8. BookCollectionSoftware - 图书管理(知识点糅合::类,对象,抽象类,接口,封装,继承,多态,顺序表)- java - 细节狂魔

    文章目录 前言 图书管理应实现的功能 准备工作 开始操作 先在book包,创建一个Book类,用来存储一本书的信息 小技巧: 根据小技巧来创造我们的 构造方法,公开的输入输出的接口,,还要重写的toS ...

  9. java自学 part2 数组 类和对象 包 继承 多态 抽象类 接口

    数组:arr 获取数组的长度:arr.length 数组转字符串: Arrays.toString(arr) 数组的拷贝: Arrays.copyOf(arr,arr.length) 数组的排序:Ar ...

最新文章

  1. Windows 编程[9] - WM_CLOSE 消息
  2. Qt应用程序主窗口之一:主窗口框架
  3. css颜色rgba代码对照表_改善 CSS 的 10 个最佳实践
  4. 火狐插件youdao word capturer无法删除。
  5. solr定时实时重建索引和增量更新
  6. html的换行问题(未解决)
  7. postman上传图片时已经添加cookie,但仍显示未登陆
  8. win10修改时间同步服务器,解决win10时间服务器同步问题|重置win10时间服务配置...
  9. 【Flink】FLink 反序列化空指针 java.lang.String.<init> SimpleStringSchema
  10. oracle从子表取出前几行数据:
  11. Delphi运行期错误
  12. 2021全国大学生电子设计竞赛论文(智能送药小车(F题))(电赛论文模板)
  13. Redis设计与实现读后感
  14. mysql数据库事务模拟转账_mysql数据库事务阐发:实现银行转账功能的优化,附代码+实现过程...
  15. 工程学导论-第四章-创造力
  16. linux虚拟桌面设置不同的背景,给不同虚拟桌面设置不同壁纸,将windows的虚拟桌面最大化使用...
  17. 自己动手写三层代码生成器学习总结
  18. 虚拟机安装报错-启动失败-Intel VT-x 处于禁用状态
  19. UG NX 12 鼠标操作
  20. 27-TCP 协议(快重传与快恢复)

热门文章

  1. jquery .parents(), .parent() 和 closest()方法
  2. Python join sorted sort map reduce 函数解析
  3. Spark 应用程序调优
  4. Wake-On-LAN待机或休眠模式中唤醒
  5. 记录一下:使用 python -m SimpleHTTPServer 快速搭建http服务
  6. FB邮件服务器测试smtp,pop3
  7. linux c socket programming
  8. JS实例学习笔记——w3cschool+菜鸟教程
  9. 解读:spring-boot logging。记一次Logback在spring-boot中的使用方法
  10. Lync Server 2010标准版系列PART1:基础构建