关于泛型类是否有继承关系的一种情况的分析

Cat类继承了Animal类,有人会觉得,ArrayList<Cat>类相应的也会继承ArrayList<Animal>类。但是,并不是这样的!ArrayList<Cat>类和ArrayList<Animal>类没有继承关系。

打个比方吧,我们用Zoo(创建了一个动物园类)来替代ArrayList——由Cat(猫)们组成的动物园和由Animal(动物)们组成的动物园,从分类法来看,并没有上下级的关系。一个是动物组成的动物园,一个是猫构成的动物园,并没有哪个是父类,哪个是子类这一说。Zoo<Cat>和Zoo<Animal>完全是两个不同的东西,但是,它们两个,都是Zoo的子类,狗动物园也好,猫动物园也好,都是动物园。


Zoo<Cat> z1 = new Zoo<>();
z1.add(new Cat());

Zoo z = z1;
z.add(new Dog());
z.add(new Mouse());
z1中的本来是只有猫的,但是,通过z的创建,调用添加内容的方法,改变了z1的内容——在其中加入了狗和老鼠,这样子,虽然编译及运行时没出错,但是,如果在后续对z1进行操作并获取其内容,就会出现错误。。。动物园在猫、狗和老鼠的折腾下,怕是要出乱子。




猜你喜欢

转载自blog.csdn.net/moxiyuyan1994/article/details/80929840
今日推荐