黑马程序员技术交流社区

标题: oc中的继承 [打印本页]

作者: 杨勇    时间: 2014-4-30 15:45
标题: oc中的继承
本帖最后由 杨勇 于 2014-5-7 10:10 编辑

在oc中,如果子类继承了父类,那么子类可以重写父类的方法,请问子类中能否定义和父类相同的成员变量?谢谢
作者: 执着的土豆    时间: 2014-4-30 16:05
既然是继承,那么子类会拥有父类中所有得成员变量和方法,因此子类不可以定义跟父类中相同得成员变量,会造成重复定义。但是可以拥有跟父类相同的方法。
作者: 菜鸟de无奈    时间: 2014-4-30 16:26
规定子类继承父类,不可以定义和父类相同的成员变量。
另:请问什么情景下,你会这么用?
作者: 小海    时间: 2014-4-30 21:00
不可以,子类继承过来,它就有了,没必要再定义
作者: 曹雨    时间: 2014-5-4 10:30
方法重定义不是?
如果子类中有重定义父类的方法,并且使用的是父类的成员变量,那么所输出的就是父类的成员变量。
只有子类中有重定义父类的方法,并且使用的是子类重定义的成员变量,那么输出的是子类的成员变量。
关键还是看你调用的是哪个方法
作者: 张秋月    时间: 2014-5-4 10:42
是可以重新定义的,从继承来看,你在子类重新定义相同的变量,那就是重写父类的相同的变量,类似于你重写父类的方法。
也可以从另一个方面来看,就类似于你在一个类里面,定义一个全局变量,你同样可以在你的函数里面定义一个相同名字的变量。
只是在你最终在子类里面用的时候,如果你重写了那个变量,你就是用的你子类里面的变量,类似于你在函数里面,用你定义的变量 不是全局变量一样。
作者: godlike    时间: 2014-5-4 10:49
不可以,这个问题老师在视频中讲的很清楚了,子类不可以定义和父类相同名称的属性;是会直接报错的,而不是警告; 重写是对方法而言的;
作者: 郑亚鸽    时间: 2014-5-4 15:18
1、不允许子类和父类拥有相同名称的成员变量

2、可以允许子类和父类拥有相同名称的方法,如果子类和父类中都有相同名称的方法,当子类对象调用方法时,先查看子类中的方法,就近原则,

3、当子类中拥有父类中相同名称的方法,又称为该方法的重写;即子类重新实现父类中的方法,覆盖父类以前的做法
作者: m573555543    时间: 2014-5-4 15:26
1.重写:子类重新实现父类中的某个方法,覆盖父类以前的做法
2.注意
1> 父类必须声明在子类的前面
2> 子类不能拥有和父类相同的成员变量
3> 调用某个方法时,优先去当前类中找,如果找不到,去父类中找





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