黑马程序员技术交流社区

标题: 面向对象问题 [打印本页]

作者: 位俊鹏    时间: 2014-2-25 23:55
标题: 面向对象问题
有以下代码;
classClassA{}
classClassB extends ClassA{}
classClassC extends ClassA{}
以及
ClassAp0 = new ClassA();
ClassBp1 = new ClassB();
ClassCp2 = new ClassC();
ClassAp3 = new ClassB();
ClassAp4 = new ClassC();
A:p0 = p1;
B:p1 = p2;
C:p1 =(ClassB)p3;
Dp2 =(ClassC)p4;
请问那个正确?并简要分析.



作者: luoanjade    时间: 2014-2-26 00:23
这题目是你自己写的吗?这是要比较两个对象?还是?选项里面怎么全都是赋值表达式,而不是“==”。如果选项里面的“=”改为“==”的话,一个都不对。
作者: 榨菜    时间: 2014-2-26 00:36
你这个应该是多态的问题  A 是对的。 B是错的,不同的类,没有继承关系。  C  对。 D是对的。  ----------这是我的理解  
作者: 榨菜    时间: 2014-2-26 00:39
1.多态的体现
     父类的引用指向了自己的子类对象。
     父类的引用也可以接收自己的子类对象
2.多态的前提
     必须是类与类之间有关系,要么继承,要么实现。
     存在覆盖。
3.多态的好处
     多态的出现大大提高了程序的扩展性。


这个是我的笔记,你看看对你有没有用。  
作者: 位俊鹏    时间: 2014-2-26 10:03
luoanjade 发表于 2014-2-26 00:23
这题目是你自己写的吗?这是要比较两个对象?还是?选项里面怎么全都是赋值表达式,而不是“==”。如果选项 ...

首先谢谢你,   在别的地方看到的,一个老师出的题,确定是赋值问题, 好像主要考察多态,继承的.
作者: 位俊鹏    时间: 2014-2-26 10:05
榨菜 发表于 2014-2-26 00:39
1.多态的体现
     父类的引用指向了自己的子类对象。
     父类的引用也可以接收自己的子类对象

嗯,好!谢谢啦!!
作者: luoanjade    时间: 2014-2-27 23:25
位俊鹏 发表于 2014-2-26 10:03
首先谢谢你,   在别的地方看到的,一个老师出的题,确定是赋值问题, 好像主要考察多态,继承的. ...

ACD是对的,B是错的!
A,从多态的角度来看,父类的引用指向子类的对象,这是对的。
C,p1是ClassB的引用,p3是是它的父类ClassA的引用,也是指向一个ClassB对象,使用强制转换,p1=(ClassB)p3,是对的,就好像,int=(int)double,一样,不知道这个比方对不对,反正就是这个意思。
D,与C类似;
B,这个举个实例来说一下吧!比如,动物是父类,人和猪是两个子类,两个类都有自己的特性,人当然就不能创造出猪,猪也不能创造出人,对吧?




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