黑马程序员技术交流社区

标题: 向下转型怎么访问子类的方法 [打印本页]

作者: TheBadboy    时间: 2015-8-15 23:21
标题: 向下转型怎么访问子类的方法
是怎么访问的呢,

作者: 樱花飘过    时间: 2015-8-15 23:38
比如.Student继承Person类,向下转型就是多态:Person p=new Student( );向下转型就是 Student s=( Student)p;
然后可以用s.方法名调用,子类的特有方法,当然也可以不用s来接受,也是就匿名的对象,也是要.方法名调用
作者: TheBadboy    时间: 2015-8-16 10:01
樱花飘过 发表于 2015-8-15 23:38
比如.Student继承Person类,向下转型就是多态:Person p=new Student( );向下转型就是 Student s=( Student)p ...

那么向下转型之前必须要Persom p=new Student(); 吗
作者: 樱花飘过    时间: 2015-8-16 10:07
TheBadboy 发表于 2015-8-16 10:01
那么向下转型之前必须要Persom p=new Student(); 吗

是的,需要先多态,再转型,
作者: JXHIUUI    时间: 2015-8-16 10:24
樱花飘过 发表于 2015-8-15 23:38
比如.Student继承Person类,向下转型就是多态:Person p=new Student( );向下转型就是 Student s=( Student)p ...

正解,用到多态跟强制转换!
作者: TheBadboy    时间: 2015-8-16 12:25
樱花飘过 发表于 2015-8-16 10:07
是的,需要先多态,再转型,

那这样不就没意义了么,直接创建子类的对象,访问子类的方法不就可以 了
作者: 3174918418    时间: 2015-8-16 13:43
本帖最后由 3174918418 于 2015-8-16 13:45 编辑

首先你要先了解多态的定义:
        对象在不同时刻表现出来的不同状态
        所以可以增强程序的扩展性和可维护性,所以才使用多态。

而父类调用子类的方法一途是因为:
        父类引用不能直接使用子类对象的特有功能, 如何解决这个问题?
         向下转型 (就是强转)
         Ex: 格式  (子类)父类




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