【学习笔记】第一章 对象导论
来源:互联网 发布:打开xlsx的软件 编辑:程序博客网 时间:2024/05/01 04:06
1.1 抽象过程
1.万物皆对象
2.程序是对象的集合,它们通过发送消息来告知彼此所要做的。
3.每个对象都有自己的由其他对象所构成我的存储。
4.每个对象都拥有其类型。
5.某一特定类型的所有对象都可以接受同样的消息。
对象,即为某个类的实例。
在OOP中,一切事物可以抽象为对象,即所谓万物皆对象。
每个对象(类)定义有自己的方法,赋予对象发送消息的能力。
类似C的结构体,每个对象可以包涵其他对象,基础类型,进一步抽象。
多态,上下转型,赋予同类对象可以接收同样的消息。
P1.对象的创建
Light li = new light();//new light()为类Light的新生成的一个对象(实例),li为该对象的引用。
1.3 每个对象都提供服务
在良好的面向对象设计中,每个对象都可以很好得完成一项任务,但是它并不试图做更多的事。
不要赋予一个对象太多的功能,功能不明确,不利于代码复用。
1.4 被隐藏的具体实现
java用三个关键字在类的内部设定边界:public,private,protected。
public:包内任何人可用。
private:类中可用,即除了类的创建者其余用户不可见。
protected:继承自父类的子类可以调用父类中的protected成员,private则不行。
1.6 继承
对面向对象设计的人们来说,困难之一是从开始到结束过于简单。
在对自然事物的描述中,我们可能直接建立一个类来对该事物进行抽象(比如需要圆形,我们就创建一个圆形类),并未考虑到之后可能还有三角形,正方形之类的需求。所以我们需要跟长远的考虑,例如建立几何形类,使圆类继承自该类,以便于代码的扩展,也不会让许多类看起来杂乱。
对于继承可能会引发某种争论,继承应该只覆盖基类的方法(而并不添加在基类中没有的新方法)么?
替代原则:不在子类中实现新的接口(不添加父类接口不提供的方法)。否则可能在实现了新接口后,使子类具备了更多的功能,使父类的定义不再适用于对子类的描述。
1.7 伴随多态的可互换对象
如果某个方法要让泛化几何形状绘制自己,让泛化交通工具行驶,或者让泛化的尿了移动,那么编译器在编译时是不可能知道应该执行那一段代码的。
假设存在方法action(Bird bird),在action中调用bird的move方法,Brid类存在子类Goose,Penguin,三个类存在各种不同的move方法。那么在bird传入不同类型的引用时,调用action会发生什么呢?
class Bird { public void move() { System.out.println("bird fly"); }}class Goose extends Bird{ @Override public void move() { System.out.println("Goose swim"); }}class Penguim extends Bird { @Override public void move() { System.out.println("Penguim walk"); }}public class Demo { public static void main(String[] args) { Bird b = new Bird(); Goose g = new Goose(); Penguim p = new Penguim(); action(b); action(g); action(p); } private static void action(Bird bird) { bird.move(); }}/*Output bird fly Goose swim Penguim walk*/
不知何故,他总是做了该做的。
前期绑定:在编译时, 方法调用已经和方法体绑定。
后期绑定:在运行时,根据存储在对象内部的信息计算方法体的地址,以完成调用。
java显然属于后者。
1.9 容器
P2 泛型存在的原因
在之前容器中只存储Object的对象,在向下转型的过程中存在安全隐患,故在建立容器的时候直接显式的定义泛型,以<>表示。例如: Linkedlist<String>
1.10 对象的创建和生命期
在堆栈创建对象:创建,释放快,但不灵活(要提前知道对象的特性)。
在堆中动态分配内存创建对象:创建,分配慢,灵活。
P3客户端编程
在浏览器与服务器的交互中,浏览器处于被动,全权依赖于服务器返回的数据,为解决流量过多的问题,将一些客户端力所能及的处理放在客户端执行而进行的客户端编程。e.g.插件,脚本语言,java(applet)。
- 【学习笔记】第一章 对象导论
- 笔记:第一章 对象导论
- 《算法导论》学习笔记第一章
- 算法导论 学习笔记 第一章
- 第一章 对象导论笔记(一)
- JAVA编程思想笔记--第一章 对象导论
- Thinking in java 第一章:对象导论 笔记
- 第一章 对象导论
- 第一章:对象导论
- 第一章 对象导论
- 第一章 对象导论
- TIJ 第一章 对象导论
- 第一章 对象导论
- 第一章 对象导论
- 第一章 对象导论
- 第一章 对象导论
- 第一章 对象导论
- 第一章 对象导论
- 时间定时器
- 面向对象_继承的引入和概述
- css3中如何让多余的字符串消失并附加省略号的方法
- android----adb命令
- 欢迎使用CSDN-markdown编辑器
- 【学习笔记】第一章 对象导论
- ACdream1063-平衡树
- 环境变量配置
- Message 2100 not found; No message file for product=RDBMS, facility=UL
- 2016-09-26
- 【编程语言】Python 指定解释器
- 程序报错:”_SCNetworkReachabilityCreateWithAddress", referenced from:或 "_UTTypeCopyPreferredTagWithClass"
- Children of the Candy Corn
- Oracle 11r2 数据库冷备