面向对象

1、对象导论

  • 万物皆为对象: 将对象视为奇特的变量,它可以存储数据,除此之外,你还可以要求它在自身上执行操作,理论上讲,你可以抽取待求解问题的任何概念化构件(狗,建筑物,服务等),将其表示为程序中的对象
  • 程序是对象的集合,它们通过发送消息来告知彼此所要做的: 要想请求一个对象,就必须对该对象发送一条信息。更具体说,可以把消息想象为对某个特定对象的方法的调用请求。
  • 每个对象都拥有其类型: 按照通用的说法,每个对象都是某个类(class)的一个实例(instance),这里 就是 类型 的同义词。每个类最重要的区别在于其他类的特性就是"可以发送什么样的消息给它"
  • 某一特定类型的所有对象都可以接收同样的消息: 这是一句意味深长的表述,你在稍后便会看到,因为"圆形"类型的额对象同时也是"几何形"类型的对象,所以一个"圆形"对象必定能够接受发送给"几何形"对象的消息。这意味着可以编写与"几何形"交互并自动处理所有与几何形性质相关的事物的代码,这种可替代性是OOP中最强有力的概念之一

提示

对象具有状态、行为和标识。这意味着每一个对象抵都可以拥有内部数据(它们给出了该对象的状态)和方法(它们产生行为),并且每一个对象都可以唯一的与其他对象区分开来,具体来说就是每一个对象在内存中 都有一个唯一的地址

2、一切都是对象

对象如何创建?
  new 关键字,String s = new String("abc");

创建后的对象存储在哪?

程序运行时,对象是怎么进行放置安排的,特别是内存是怎样分配的?

  • 寄存器

最快的存储区,位于处理器内部,,寄存器数量极其有限,所以寄存器根据需求进行分配,不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象

  • 堆栈

位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持,堆栈指针若向下移动,则分配新的内存,若向上移动,则释放那些内存,这是一种有效的快速存储方法,效率仅次于寄存器,创建程序时

  • 常量存储
  • 非RAM存储

3、多态

4、接口

5、内部类

6、持有对象

Loading...