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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© iphone 中级黑马   /  2015-8-26 17:01  /  729 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

父类的指针可以指向子类对象,还有父类不能直接调用子类特有方法 ,这什么意思。。。能指向为什么用不了

8 个回复

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

那不就是调用父类自己的方法么
回复 使用道具 举报
iphone 发表于 2015-8-26 23:33
那不就是调用父类自己的方法么

调用的是子类继承的父类的方法,子类对这个方法进行了重写。
多态的前提条件:子类继承父类,子类重写父类的方法,父类指针指向子类对象,这时候,父类指针就可以调用子类重写的父类方法
回复 使用道具 举报
父类指针指向了子类对象,但是父类里面没有该方法的定义,所以编译器进行编译的时候就会报错,编译都通不过。但是如果将指针强制转换为子类对象的指针就能够调用子类的私有方法了。
回复 使用道具 举报
这是多态里面的内容吧,还没学到,没法直接调用吧,通过父类的引用创建子类的对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马