方法的重写

    当时给出的解决方案是:自定义一个新的init方法,将姓名与年龄当成参数传进去

    这一节,将提到另一种解决方案:重写init方法。

    其实,是因为这两个方法都是NSObject的,即系统给我们的。因为Person类继承自,所以它也有了这两个方法。(关于继承,将在下一讲中讲到)。

    系统提供了init方法,那可以不可以改呢?答案是可以的。但是呢不在NSObject里面改,哪个类觉得不够用,哪个类来改。比如,我们这里的Person类觉得,init方法不能初始化姓名、年龄这两个成员,那就由Person类来改。那么这个在子类中修改父类的方法,我们称之为重写

    1. 既然是重写,父类必须要有这个方法,而且必须公开(即方法在父类的.h中声明过);
    2. 重写时,只能修改方法的实现。方法类型、返回值、方法名、参数全都不能修改。

    这时,我们再调用init方法,就不仅仅是走NSObject的方法了,还会走重写过后的init方法。所以,输出与_height的值就是1与0.5。

      重写description方法

      控制台打印了对象的地址:

      1. 2015-04-02 22:48:42.890 test2[422:10156] <Person: 0x10020da60>

      现在我想要NSLog对象的时候,控制台输出这个人的名字,就需要重写description方法,实现如下:

      这时再输出,控制台打印: