《Objective-C程序设计(第四版)》读书笔记(二)

    4.类的扩展(p175 -  ) 

    作为C语言扩充出来的面向对象编程语言,继承与多态充分的体现在了OBJ-C里面,这些语法跟Java在很多方面有些类似。Java中类的继承,抽象类,接口等都有效的对类进行了扩展。

    3中提到了类的实例变量的继承的问题,那么为什么要创建子类呢,作者给出了三点分析:
  • 希望继承一个类的函数,也许加入一些新的方法或者实例变量。
  • 希望创建一个类的特别的版本。
  • 希望通过复写一个或多个方法来改变类的默认行为
    其实,类的扩展方式有很多种,根据自己的需求来选择扩展方法将会提高编程的效率和代码的可读性。其他扩展比如有分类(category),协议以及合成对象的方法等。

    所谓合成对象(composite),就是指这个类中包含其他类的一个或多个对象。比如有一个类描述了矩形和一些方法,现在想写一个正方形的类,他可以成为矩形的子类,但是这样property就会是宽和高(w,h),这样虽然有效但是显然有些不适用,所以我们需要定义一个新类,包含矩形类中的实例变量,声明自己的方法,因为这个变量是矩形变量,所以甚至可以给变量发送一些矩形类中定义的消息,使得编写和使用更加方便快捷。


    5.预处理(p240)
    预处理主要是一些条件编译,导入(#import),还有宏定义(#define),宏定义多用来进行声明一些定值或者一些公式的预定义,宏定义比较简单,主要注意几点:
    a.末尾不要加分号。
    b.定义计算时,要尽量考虑运算符先后顺序的问题,加一些括号。例如定义了一个宏:
    #define SQUARE(x) x * x
    但是如果传入的是 v+1 呢,就会发生这种情况,计算的公式为 v+1*v+1 所以在定义宏的时候加入括号把每一步计算过程括起来:
    #difine SQUARE(x) ((x) * (x)) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值