二、对象
1.椅子大战(对象如何改变你的一生)
第一阶段:
要求:在图形接口画出四方形、圆形和三角形。当用户点选图形时,图形需要顺时针转360° 并依据形状的不同播放AIF音效文件。
1号人物:直接写出了 rotate 和 playSound 两个方法
rotate(shapeNum) {
// 旋转360度
}
playSound(shapeNum) {
// 查询播放哪个AIF文件
// 播放
}
2号人物:分别为3个形状各写了一个类
-------------------------------------------------------------------------
第二阶段:
需求更改:加上阿米巴原虫形状,点击时旋转并播放 .hif声音文件
1号人物:原来的 rotate 方法还可以使用,不需要修改,但是 playSound 方法就必须得修改了
playSound(shapeNum) {
// 如果不是阿米巴原虫
// 查询播放哪个AIF文件
// 播放
// 不然
// 播放 amoeba .hif
}
2号人物:增加了一个新类
-------------------------------------------------------------------------
第三阶段:
需求不明确:阿米巴原虫旋转方式和其它几种形状的旋转不一样
1号人物:修改 rotate 方法
rotate(shapeNum, xPt, yPt) {
// 如果不是阿米巴原虫
// 计算中心点
// 然后旋转
// 否则
// 以 xPt 和 yPt 作为旋转中心
// 然后旋转
}
2号人物:也修改了 rotate 方法(只是修改 Amoeba 类里的 rotate 方法)
-------------------------------------------------------------------------
第四阶段:
1号人物质疑:2号人物的程序有很多重复代码,维护成本太高,没有效率。
2号人物回应:首先找出4个类的共同部分,提取出一个新的类(Shape 类),使其作为父类,4个子类继承自该父类,Amoeba 类重写里面方法来覆盖父类的方法。
-------------------------------------------------------------------------
2.以对象来思考
对象是靠类的模型塑造出来的:
a. 对象是已知的事物:对象本身已知的事物被称为--实例变量 (instance variable)
b. 对象会执行动作: 对象可以执行的动作称为--方法(methods)
-------------------------------------------------------------------------
3. 类与对象的不同
类不是对象(却是用来塑造他们的模型)
类是对象的蓝图。
-------------------------------------------------------------------------
4.逃出 main()
main()的两种用途:
a. 测试真正的类
b. 启动你的应用程序
备注:尽量不要在 main() 方法里写逻辑代码
-------------------------------------------------------------------------
5. Java会拾荒
创建对象时,它会被存放在称为堆的内存区域中。不管对象如何创建都会放在此区域中。此区域并非普通的堆;它是可回收垃圾的堆(Garbage-Collectible Heap)。Java会根据对象的大小来分配内存空间。当某个对象被Java虚拟机察觉不再会被使用到时,该对象就会被标记为可回收的。如果内存开始不足,垃圾收集器就会启动来清理垃圾、回收空间,让空间能够再次被利用。