Atitit object 和class的理解 目录 1.1. 发现很多Object的方法都是相同的,他们被重复地放在一个个对象当中,太浪费了。 1 1.2. 那我们怎么把这些Object给创建起来
Atitit object 和class的理解
目录
1.1. 发现很多Object的方法都是相同的,他们被重复地放在一个个对象当中,太浪费了。 1
1.2. 那我们怎么把这些Object给创建起来?并且让Object 和 Class关联?” 2
1.3. 要操作Object的数据, 到底操作的是哪一个Object?:“要有this!” 4
Object
上帝说:“要有Class!把这些重复的方法代码从对象中剥离出来,放到一个公共的Class中! ”
上帝说:“可以用new 这个关键字:Stack object1 = new Stack();”
Stack类的函数定义只有一份,但是Stack类生成的Object有很多份。
每次调用函数的时候,可以把要操作的Object作为一个隐藏的参数传递进去。例如void push(int data),真正在调用的时候是这样的:void push(Stack this, int data)。
有个叫Guido的说:“我能不能把this改成 self ? ”
上帝说:“随你喽!”
还有人说:“这不又回到我们原始的状态去了吗? void push(Stack *s,int data)”
上帝告诫说:“虽然本质相同,但是表达形式不同,之前你在语法层面必须传递一个Stack 对象到函数,现在在语法层面不用加了。我会在编译后的代码,或者运行时自动给你们加上。”
很多很多的Class,上帝发现有些Class包含了类似的功能,还是有重复代码。
上帝说:“要有继承!把那些类似的、重复代码放到父类当中去,这样子类就可以直接使用,不用重新再写一遍了
编程的关键是要抽象啊!你们得把系统需求抽象成高层的概念,然后在概念层次进行编程。”
这句话本身就很抽象。
分析问题应该站在概念的层次上,而不是站在实现的层次上。什么叫做概念的层次呢?简单的说就是分析对象该做什么,而不是分析对象怎么做。前者属于分析的阶段,后者属于设计甚至是实现的阶段
简单的说吧,在概念层次上进行分析就是设计出接口(或是基类),而不用关心具体的接口实现(实现推迟到子类再实现)
面向对象圣经.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步