比如 有个父类 Parent和其子类Child,其中分别有两个实例对象,p和c |
|
5分 |
能的。。。
一个水果的list,既可以add苹果,又可以add香蕉 |
5分 |
一般都会避免这样使用
就好像你要把int,float和string都放到List<object>里去一样,能放进去吗?肯定是能放进去的 问题是你如何取出来?写一大堆switch,case判断类型吗 |
5分 |
可以。声明父类 就是说了个继承的特性,将拥有相同特性的对象封装为同一类对象。
|
既然可以,确实问题就是怎么取出来了,如果直接list.elementat<> 取出来的对象(假设正好是子类)可否调用子类属性方法呢?
|
|
5分 |
可以的。注意事项就是,所以用到这里list的地方,使用里面的元素的时候,只用父类的方法。
也就是说,不让让调用这个list的地方知道里面还有子类的对象,一律当做父类对象来看到。别出现判断类型的分支代码。 |
经过测试,
如果list add子类对象,那么list取出来的对象是可以强制转换成子类然后调用子类属性和方法; 如果list add父类对象,则不行。 |
|
10分 |
本来就是这样啊. |