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

二、对象

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

 

 

转载于:https://my.oschina.net/u/2411436/blog/807005

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值