黑马程序员技术交流社区

标题: 重写构造方法为何一定要先调用父类的init方法 [打印本页]

作者: hero200521296bj    时间: 2015-3-21 16:11
标题: 重写构造方法为何一定要先调用父类的init方法
默认的构造方法new构造的对象里变量都为零,修改变量值,还需要进行一步赋值。重写构造方法的好处在于,在创建对象的时候就对对象的成员变量就行赋值。可以节省代码。视频里一再强调重写构造方法时,要先调用父类的init方法,先对父类的成员变量就行初始化。原因在哪呢。
我认为如果父类成员变量只有非指针变量,那么是否一定先对父类成员变量初始化没什么影响。但是就是因为父类中一定有指针变量,最起码也有isa指针。这个变量如果不先对父类进行初始化的话,那么子类中的isa就没有值就是nil,那么子类就没法通过isa操作父类中的方法。也就是说子类只能继承了父成员变量,但是继承不了父类的方法。
而且如果父类中有类指针的话,子类连父类的指针变量都无法继承,因为只有父类对指针变量就行初始化也必须进行初始化,这样子类才可以对父类拥有的对象进行操作。否则子类连这个指针行的成员变量也无法拥有。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2