面向对象
所有编程思想都提供抽象机制。(抽象的类型与质量)
- 程序是对象的集合,它们通过发消息来告知彼此所要做的
- 每个对象都拥有其类型
- 某一特定类型的所有对象都可以接收同样的消息
用引用操作对象
- 一切视为对象,但操作的表示符实际上是对象的一个“引用(reference)”
遥控 -->引用 电视机 -->对象
必须由你创建所有对象
存储
- 寄存器 位于处理器内部(不同于其他存储区的地方)处理最快,但寄存器的数量极其有限。
- 堆栈 位于通用RAM(随机访问存储器),用于储存对象的引用,堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。
- 堆 一种通用的内存池 也位于RAM 用于储存所有的Java对象,当需要一个对象,只需new写一行简单的代码,当执行此代码时,会自动在堆里进行存储分配。
- 常量存储 常量值通常直接存放在程序代码内部
- 非RAM存储
永远不需要销毁对象
- Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。{ String s = new String() },引用s在作用域终点就消失了,然而,s指向的String对象仍占据内存空间。
- 基本类型即使没有初始化,Java也确保它获得一个默认值(局部变量不适用)。
- 方法名和参数列表(合起来被称为“方法签名”)唯一地标识出某个方法。
- 创建新的数据类型:类
对象 is - a
- 子类是一个父类(Dog is a Animal)
public Animal {}
public Dog extends Animal {}
对象 has - a
- 现有类中拥有另一个类的引用
public Kill{
public void killer(){}
}
public Pig{
private Kill mkill;
public void operation(){
mKill = new Kill();
mKill.killer();
}
}
多态 多态是继承数据抽象和继承之后的第三种基本特征
- 编译时只检查引用类型(父类)
- 运行时指定对象的类型(子类)
- 重写所执行的方法 必须为父类拥有的方法
- 不是在运行时才会检测,而是编译时无法检测
用继承表达行为间的差异,并用字段表达状态上的变化
封装
- 封装通过合并特征和行为来创建新的数据类型
fanalize
只有当垃圾回收机制执行时,finalize()才会执行,但无论是“垃圾回收”还是“终结”,都不能保证一定会执行
- 垃圾回收只与内存有关
- 垃圾回收只回收new出来的对象
成员初始化
- 局部变量必须初始化 否则编译错误
- 成员变量 基本数据类型是有默认值的 对象为null
静态初始化
- 静态初始化只有在对象创建的时候进行
静态代码块
- 有且只执行一次,在构造函数前执行
代码块
- 每次new新的对象,都会再次执行,在构造函数前执行
继承
复用类,分为组合语法与继承。组合语法其实就是创建对象的引用来使用
- 每一个非基本数据类型都有一个toString()方法,将对象转换为String类型。
- 复用类还有一种实现方式是代理,其实就是在成员里创建类的引用,然后调用
深拷贝与浅拷贝
- 浅拷贝 拷贝对象和原始对象的引用类型引用同一个对象。
- 深拷贝 拷贝对象和原始对象的引用类型引用不同对象。
网友评论