黑马程序员技术交流社区

标题: 多态问题 [打印本页]

作者: iphone    时间: 2015-8-26 17:01
标题: 多态问题
父类的指针可以指向子类对象,还有父类不能直接调用子类特有方法 ,这什么意思。。。能指向为什么用不了

作者: 李天昊    时间: 2015-8-26 21:10
实际上可以调用 OC是弱语法 调用方法是在运行时才动态搜索的 用父类类型的指针指向子类,然后调用子类方法 并不会报错 只会有警告 程序跑起来也可以执行子类对应的方法 但是没有人会这么写 这是不规范的 是有风险的
作者: fersh    时间: 2015-8-26 22:38
父类的指针指向的是子类的内存空间,指针操作的是子类的对象数据,如果把指针强制类型转换成子类的类型,是可以用子类的特有语法的
作者: fersh    时间: 2015-8-26 22:39
父类的指针指向的是子类对象的内存空间,指针操作的是子类的对象数据,如果把指针类型强制转换成子类的类型是可以用子类的特有方法的。
作者: Pythoner    时间: 2015-8-26 22:46
不能调用子类特有方法是指不能调用子类自己定义的方法,但是可以调用子类继承的父类方法
作者: iphone    时间: 2015-8-26 23:33
Pythoner 发表于 2015-8-26 22:46
不能调用子类特有方法是指不能调用子类自己定义的方法,但是可以调用子类继承的父类方法 ...

那不就是调用父类自己的方法么
作者: Pythoner    时间: 2015-8-27 09:03
iphone 发表于 2015-8-26 23:33
那不就是调用父类自己的方法么

调用的是子类继承的父类的方法,子类对这个方法进行了重写。
多态的前提条件:子类继承父类,子类重写父类的方法,父类指针指向子类对象,这时候,父类指针就可以调用子类重写的父类方法
作者: alanwangke213    时间: 2015-8-29 18:10
父类指针指向了子类对象,但是父类里面没有该方法的定义,所以编译器进行编译的时候就会报错,编译都通不过。但是如果将指针强制转换为子类对象的指针就能够调用子类的私有方法了。
作者: 15095185209    时间: 2015-8-29 21:05
这是多态里面的内容吧,还没学到,没法直接调用吧,通过父类的引用创建子类的对象。




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