黑马程序员技术交流社区

标题: 关于多态的局限性 [打印本页]

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

动态检测,谢谢,学习了:)
作者: 迎着太阳    时间: 2014-12-10 18:20
yuliblossom 发表于 2014-12-10 17:58
父类类型的变量不能直接调用子类特有的方法,它能调用的是它们共有的方法吗?如果子类重写了父类的某个方法 ...

我明白你的意思了,是我表达问题不够清晰。谢谢:D
作者: lnyg1992    时间: 2014-12-10 19:25
路过学习下
作者: 楚燮哥哥    时间: 2014-12-11 09:24
路过学习下




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