Java学习·多态

来源:互联网 发布:miss7号淘宝店 编辑:程序博客网 时间:2024/05/14 04:19
/*
多态可以理解为事物存在的多种体现形态
人:男人,女人
猫 x=new 猫();
动物 x=new 猫();


1、多态的体现
父类的引用指向类自己的子类对象。
父类的引用也可以接收自己的子类对象
2、多态的前提
必须是类与类有关系,要么继承要么实现
通常还有一个前提,存在覆盖。
3、多态的好处
多态的出现大大的调高程序的扩展性
4、多态的应用

5、多态的弊端
只能使用父类的引用访问父类中的成员
6、多态的出现代码中的特点
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边
  在多态中,成员变量的特点:
无论编译还是运行,都参考左边(引用型变量所属的类)
  在多态中,静态成员函数的特点:
无论编译和运行,都参考左边

*/

<pre name="code" class="java">abstract class Animal{public abstract void eat();}class Cat extends Animal{public void eat(){System.out.println("吃鱼");}public void catchFish(){System.out.println("抓老鼠");}}class Dog extends Animal{public void eat(){System.out.println("吃骨头");}}public class DuoTaiDemo {public static void main(String[] args){/*Cat c=new Cat();Cat c1=new Cat();function(c);function(c1);function(new Dog());*/Animal c2=new Cat();//类型提升,向上转型c2.eat();//如果想要调用猫的特有方法时,如何操作?//强制将父类引用。转成子类类型,向下转型}/*public static void function(Cat c){c.eat();}public static void function(Dog c){c.eat();}*/public static void function(Animal a){a.eat();}}




0 0
原创粉丝点击