A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 云霄之上 中级黑马   /  2014-7-18 20:14  /  1314 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

重写init时为什么一定要先把父类初始化一下

7 个回复

倒序浏览
必须的啊。子类继承了父类定义的成员变量。谁对这些成员变量的初始化最清楚?显然是父类
回复 使用道具 举报
不alloc,怎么init
回复 使用道具 举报
一楼的说的对,初始化父类一般就是为了得到父类中成员变量和方法,因为我们可能只是部分初始化
回复 使用道具 举报
这个问题要从 alloc 和 init 的作用说起。
alloc是申请内存空间  init 则是创建对象。
也就是init后就有个实体化的对象了,这也是类方法与对象方法的区别。
至于为什么要初始化父类,是要一个父类的实体而不是虚拟的类。
有了实体后,在这基础上进行重构,也就是重写。
个人理解,有不对的地方请指出。
回复 使用道具 举报
并不是初始化父类。子类继承了父类的初始化方法,使用父类的初始化方法初始化父类的那部分数据,然后再初始化子类中的数据。
回复 使用道具 举报
如果学过C++这个问题就太容易理解了。简单的讲,子类通过继承来的数据成员需要进行初始化,所以需要调用父类的init函数对继承来的数据成员进行初始化,然后再对自己类中定义的数据成员初始化。
回复 使用道具 举报
你在写init方法时,只是对当前类作了一些初始化操作,对于父类的一些成员变量的初始化操作并没有实现,所以要先初始化父类的一些信息。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马