Atitit object 和class的理解

目录

1.1. 发现很多Object的方法都是相同的,他们被重复地放在一个个对象当中,太浪费了。 1

1.2. 那我们怎么把这些Object给创建起来?并且让Object 和 Class关联?” 2

1.3. 要操作Object的数据, 到底操作的是哪一个Object?:“要有this!” 4

1.4. 要有继承 防止Class包含了类似的功能 4

1.5. 在概念层次进行编程。” 4

Object

  1. 发现很多Object的方法都是相同的,他们被重复地放在一个个对象当中,太浪费了。

上帝说:“要有Class!把这些重复的方法代码从对象中剥离出来,放到一个公共的Class中! ”

  1. 那我们怎么把这些Object给创建起来?并且让Object 和 Class关联?”

上帝说:“可以用new 这个关键字:Stack object1 = new Stack();”

Stack类的函数定义只有一份,但是Stack类生成的Object有很多份。

  1. 要操作Object的数据, 到底操作的是哪一个Object?:“要有this!”

每次调用函数的时候,可以把要操作的Object作为一个隐藏的参数传递进去。例如void push(int data),真正在调用的时候是这样的:void push(Stack this, int data)。

有个叫Guido的说:“我能不能把this改成 self ? ”

上帝说:“随你喽!”

还有人说:“这不又回到我们原始的状态去了吗? void push(Stack *s,int data)”

上帝告诫说:“虽然本质相同,但是表达形式不同,之前你在语法层面必须传递一个Stack 对象到函数,现在在语法层面不用加了。我会在编译后的代码,或者运行时自动给你们加上。”

  1. 要有继承 防止Class包含了类似的功能

很多很多的Class,上帝发现有些Class包含了类似的功能,还是有重复代码。

上帝说:“要有继承!把那些类似的、重复代码放到父类当中去,这样子类就可以直接使用,不用重新再写一遍了

  1. 在概念层次进行编程。”

编程的关键是要抽象啊!你们得把系统需求抽象成高层的概念,然后在概念层次进行编程。”

这句话本身就很抽象。

分析问题应该站在概念的层次上,而不是站在实现的层次上。什么叫做概念的层次呢?简单的说就是分析对象该做什么,而不是分析对象怎么做。前者属于分析的阶段,后者属于设计甚至是实现的阶段

简单的说吧,在概念层次上进行分析就是设计出接口(或是基类),而不用关心具体的接口实现(实现推迟到子类再实现)

面向对象圣经.html

Atitit object 和class的理解 目录 1.1. 发现很多Object的方法都是相同的,他们被重复地放在一个个对象当中,太浪费了。 1 1.2. 那我们怎么把这些Object给创建起来相关推荐

  1. 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析...

    作者: 牛A与牛C之间 时间: 2013-12-12 分类: 技术文章 | 2条评论 | 编辑文章 主页 » 技术文章 » 第7篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  2. Python之pandas:特征工程中数据类型(object/category/bool/int32/int64/float64)的简介、数据类型转换四大方法、案例应用之详细攻略

    Python之pandas:特征工程中数据类型(object/category/bool/int32/int64/float64)的简介.数据类型转换四大方法.案例应用之详细攻略 目录 特征工程中数据 ...

  3. java阻塞队列作用_简单理解阻塞队列(BlockingQueue)中的take/put方法以及Condition存在的作用...

    简单理解阻塞队列(BlockingQueue)中的take/put方法以及Condition存在的作用 Condition:可以理解成一把锁的一个钥匙,它既可以解锁(通知放行),又可以加锁(阻塞) n ...

  4. 理解notify()/notifyall()/interupt()对于线程里面wait方法的影响

    本文将通过三个程序例子帮助读者理解其中的原理: import java.text.SimpleDateFormat; import java.util.Date; import java.util.c ...

  5. 理解一下jQuery.extend()和jQuery.fn.extend()方法

    为了方便用户创建插件,jquery提供了jQuery.extend()和jQuery.fn.extend()方法. 1. jQuery.extend() 方法有一个重载. jQuery.extend( ...

  6. python get 下载 目录_python实现支持目录FTP上传下载文件的方法

    本文实例讲述了python实现支持目录FTP上传下载文件的方法.分享给大家供大家参考.具体如下: 该程序支持ftp上传下载文件和目录.适用于windows和linux平台. #!/usr/bin/en ...

  7. python备份目录下文件夹_Python备份目录及目录下的全部内容的实现方法

    本来是想写一个东西可以直接调用TortoiseSVN保存当前代码到一个分枝下的. 可惜调用SVN的部分还在研究.就先写了目录拷贝的部分. 如果有喜欢研究Python的童鞋愿意提供想法或者建议的话, 这 ...

  8. dede织梦data目录正确迁移及引起的问题解决方法

    dede织梦data目录正确迁移及引起的问题解决方法 参考文章: (1)dede织梦data目录正确迁移及引起的问题解决方法 (2)https://www.cnblogs.com/cdxkyz/arc ...

  9. python打开一个文件夹下所有txt文件-python读取一个目录下所有txt里面的内容方法...

    实例如下所示: import os allFileNum = 0 def printPath(level, path): global allFileNum ''''' 打印一个目录下的所有文件夹和文 ...

  10. python怎么导入txt文件夹-python读取一个目录下所有txt里面的内容方法

    实例如下所示: import os allFileNum = 0 def printPath(level, path): global allFileNum ''''' 打印一个目录下的所有文件夹和文 ...

最新文章

  1. 2022-2028年中国TAC薄膜行业市场全景评估及投资前景规划报告
  2. 贾扬清:我对人工智能方向的一点浅见
  3. 谋定数字农业生态系统 万亿市场对话中国农民丰收节交易会
  4. YII框架开发一个项目的通用目录结构:
  5. php实现服务器文件同步,PHPstorm配置同步服务器文件
  6. JAVA类定义,成员类,抽象类及接口类
  7. 100c之29:求具有abcd= ( ab + cd )^2 性质的四位数
  8. 腾讯视频转码,把qlv格式转换成mp4格式
  9. uniapp 打包H5自定义模板
  10. Invalid bound statement (not found): com.xxx.mapper.xxxMapper.selectxxx
  11. Visual C++中位图按钮的新颖设计
  12. 【致远FAQ】致远OA启动不起来了(中集)
  13. python房子_用Python研究了三千套房子,告诉你究竟是什么抬高了房价?
  14. linux打印机验证密码,HP LaserJet Pro打印机远程管理员密码泄露漏洞
  15. mysql中创建数据表
  16. N 上CR SPCSS00383586
  17. 【Android】 禁止首屏时钟AppWidget拖动到其他屏
  18. 例说图解TCP/IP协议族--TLS篇(1)抓包分析SSL/TLS握手
  19. Elsarticle - CAS文件使用说明
  20. php 调用 百度SDK 实现 图片审核+文本内容审核(敏感词过滤)

热门文章

  1. 以弹窗形式打开页面_“弹窗广告”肆意而为!扰民?还可能侵权!
  2. python逐行读取txt文件readline_Python File readline() 方法
  3. sh文件在linux下如何运行_RTMP协议安防视频平台EasyDSS在Linux系统下运行报错,如何处理?_...
  4. 在浏览器中将表格导入到本地的EXCEL文件,注意控制内存
  5. java语言之数组-----选择排序
  6. serv-u启动管理控制台后提示脚本错误解决方案
  7. hdu 2412(树形dp)
  8. DWR3.0 文件上传
  9. Packet Tracert 5.0 使用教程
  10. 在oracle表中增加字段,并调整字段的顺序