本帖最后由 张雪磊 于 2012-8-9 17:23 编辑
直接父类用父类,子类用子类不行吗?
答:
那类与类之间就没有关系了,当子类中想用到父类中的成员时就只能再写一遍了,比如你要描述10个动物,那每个类就要写一个吃饭的方法,如果把这个吃饭的方法抽取出来形成一个父类,那即是你写10000000000个动物,只要继承了父类,都不需要重新写这个吃饭地方法了,只要调用父类的方法就行了。这个就是继承后的好处了,继承还有个好处有了它就有了多态的实现。
class Animal
{ void eat(){
}
}
一只猫继承了Animal这个类,那这只猫就能吃东西了
为什么要向上向下的转型 ?
答:
对于多态假设这代码是这样的
假如在其他类的方法中需要这只猫有游泳的方法,
那可以这么做
public void toSwim(猫 c){
//你可以直接让猫实现游泳的方法
猫 c = c;
c.swim();
}
但你能让也狗实现这个方法吗?行,但是要跟操作猫一样再写一遍。如入再有千千万万个动物需要实现这个功能岂不是要写很多遍,而且实际上可不只是游泳那么简单的方法
但如果你用多台的方法,
public void toSwim(Animal c){//这里只要是Animal的子类都可以往里传,所以要先继承嘛,他先当予Animal c = new 你想传的动物()
//这样只要是继承了Animal的类都可以用这个方法,本来需要些很多方法的事现在之要写一个了。当然
//Animal c = new 你想传的动物() 这句话已经把你想传的动物向上提升成Animal类了,你只能用Animal
//类的方法,如果你想用子类地方法就要先下转型。
/*
总结下类
1,多态的体现
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
2,多态的前提
必须是类与类之间有关系。要么继承,要么实现。
通常还有一个前提:存在覆盖。
3,多态的好处
多态的出现大大的提高程序的扩展性。
4,多态的弊端:
虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。
*/
c.swim();
}
|