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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,有个概念小弟没有搞清:关于构造函数的语句的问题。
如:现有两个类,父类:Cat;子类:BlackCat extends Cat;
    有以下语句:Cat c = new BlackCat();     
    这条语句是否合法,是否是调用子类构造函数构造一个父类对象?
请大神对这条语句中Cat 的用途和 BlackCat()的用途加以详解,如果两者换位是否还合法?

点评

这个应该可以的,该句语法上没问题,如果换位了就不行  发表于 2015-4-12 13:37

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

10 个回复

倒序浏览
语句合法,交换后不合法。原因只需要记住一句话:父类引用可以指向子类对象
回复 使用道具 举报 1 0
小栀子 发表于 2015-4-12 13:28
语句合法,交换后不合法。原因只需要记住一句话:父类引用可以指向子类对象 ...

学习了:D
回复 使用道具 举报
这是多态的体现形式,父类引用指向子类对象。但是不能使用子类的特有功能。
回复 使用道具 举报
合法  这里是创建了一个子类对象 然后赋值给父类变量,换位就不合法了:黑猫是猫 猫不见得是黑猫
回复 使用道具 举报
交换后不可以。
父类引用可以指向子类对象
这个对象可以强制转型成子类。
回复 使用道具 举报
这个是多态,不能换位的
回复 使用道具 举报
yearn 中级黑马 2015-4-12 17:09:16
8#
多台的体现,父类引用创建子类对象
回复 使用道具 举报
合法,这是多态,父类指向了子类对象,可以使用父类的功能,但是不能使用子类的功能,子类是不可以指向父类的....
回复 使用道具 举报
因为有了继承才有了多态,多态的表现形式就是父类引用指向子类对象。你这个语句是合法的,但是不是构造了一个父类对象,构造的时子类对象,建立的是一个父类引用,这个父类引用指向了这个子类对象。两者换位后就不合法了。想一下:假如Cat代表猫科,BlackCat代表黑猫,当你反过来建立时,相当于建立了一个猫,你用黑猫这个引用指向了猫这个对象,但是猫科动物一定是黑猫吗?豹子就不是黑猫。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马