Head First Java (第二版)学习记录 2 - 对象

原创
2016/12/16 13:57
阅读数 117

二、对象

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虚拟机察觉不再会被使用到时,该对象就会被标记为可回收的。如果内存开始不足,垃圾收集器就会启动来清理垃圾、回收空间,让空间能够再次被利用。

 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部