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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 迎着太阳 中级黑马   /  2014-12-10 17:28  /  892 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    父类类型的变量不能直接调用子类特有的方法,它能调用的是它们共有的方法吗?如果子类重写了父类的某个方法,先调用哪一个的方法?

6 个回复

倒序浏览
重写了先调子类的,动态检测的时候发现父类指针保存的是子类,就会去调用子类方法。
其实关闭ARC后用父类调用子类独有方法只是个警告说可能无法响应这个方法,强行调用还是会调用子类的方法。
但是开启ARC情况下会直接报错说方法声明不可见啥的。
包括没有在@interfere声明的方法ARC下都是无法调用,利用这点可以实现私有方法,而关闭ARC后可以无视警告强行调用。
回复 使用道具 举报
父类类型的变量不能直接调用子类特有的方法,它能调用的是它们共有的方法吗?如果子类重写了父类的某个方法,先调用哪一个的方法?
父类类型的变量不能直接调用子类特有的方法,它能调用的是它们共有的方法吗?
首先有个问题:楼主说的父类类型的变量不能叫变量,应该叫父类类型的对象
然后回答你的问题:父类类型的对象不能调用它们共有的方法,比如说子类复写了父类的某个方法,此时父类无法调用子类的这个方法。如果是父类类型的对象只能调用父类中的方法
如果子类重写(即复写)了父类的某个方法,子类的对象会调用子类复写的方法,而不会再去使用父类的方法,否则复写(楼主说的重写)是没有意义的。:)求共同学习理解
回复 使用道具 举报
从今以后 发表于 2014-12-10 17:47
重写了先调子类的,动态检测的时候发现父类指针保存的是子类,就会去调用子类方法。
其实关闭ARC后用父类调 ...

动态检测,谢谢,学习了:)
回复 使用道具 举报
yuliblossom 发表于 2014-12-10 17:58
父类类型的变量不能直接调用子类特有的方法,它能调用的是它们共有的方法吗?如果子类重写了父类的某个方法 ...

我明白你的意思了,是我表达问题不够清晰。谢谢:D
回复 使用道具 举报
路过学习下
回复 使用道具 举报
路过学习下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马