黑马程序员技术交流社区
标题:
前辈们,小弟求解一构造函数问题
[打印本页]
作者:
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