黑马程序员技术交流社区

标题: 前辈们,小弟求解一构造函数问题 [打印本页]

作者: Zack    时间: 2015-4-12 13:15
标题: 前辈们,小弟求解一构造函数问题
如题,有个概念小弟没有搞清:关于构造函数的语句的问题。
如:现有两个类,父类:Cat;子类:BlackCat extends Cat;
    有以下语句:Cat c = new BlackCat();     
    这条语句是否合法,是否是调用子类构造函数构造一个父类对象?
请大神对这条语句中Cat 的用途和 BlackCat()的用途加以详解,如果两者换位是否还合法?
作者: 小栀子    时间: 2015-4-12 13:28
语句合法,交换后不合法。原因只需要记住一句话:父类引用可以指向子类对象
作者: redlake    时间: 2015-4-12 14:03
小栀子 发表于 2015-4-12 13:28
语句合法,交换后不合法。原因只需要记住一句话:父类引用可以指向子类对象 ...

学习了:D
作者: leonard    时间: 2015-4-12 14:06
这是多态的体现形式,父类引用指向子类对象。但是不能使用子类的特有功能。
作者: sisel    时间: 2015-4-12 16:38
合法  这里是创建了一个子类对象 然后赋值给父类变量,换位就不合法了:黑猫是猫 猫不见得是黑猫
作者: thoris    时间: 2015-4-12 16:46
交换后不可以。
父类引用可以指向子类对象
这个对象可以强制转型成子类。
作者: 侯永凯    时间: 2015-4-12 16:49
这个是多态,不能换位的
作者: yearn    时间: 2015-4-12 17:09
多台的体现,父类引用创建子类对象
作者: 潘成旺    时间: 2015-4-12 17:41
合法,这是多态,父类指向了子类对象,可以使用父类的功能,但是不能使用子类的功能,子类是不可以指向父类的....
作者: 燕赵之风    时间: 2015-4-12 17:42
因为有了继承才有了多态,多态的表现形式就是父类引用指向子类对象。你这个语句是合法的,但是不是构造了一个父类对象,构造的时子类对象,建立的是一个父类引用,这个父类引用指向了这个子类对象。两者换位后就不合法了。想一下:假如Cat代表猫科,BlackCat代表黑猫,当你反过来建立时,相当于建立了一个猫,你用黑猫这个引用指向了猫这个对象,但是猫科动物一定是黑猫吗?豹子就不是黑猫。




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