标签:
多态:可以理解为事物存在的多种体现形态。多态中,静态成员函数的特点:无论编译和运行,都参考左边。
abstract class Animal { public abstract void eat(); public abstract void jiao(); } class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void jiao() { System.out.println("喵喵"); } public void catchMouse() { System.out.println("捉老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void jiao() { System.out.println("汪汪"); } public void kanJia() { System.out.println("看家"); } } class DoAnimal//将行为封装起来。 { public void doSome(Animal ani) { ani.eat(); ani.jiao(); } } class DuoTaiDemo { public static void main(String args[]) { //Animal an=new Cat();//类型提升,向上转型。父类引用指向子类对象,父类的引用为Animal类型。 //an.eat(); //如果想要调用猫的特有方法时,需要强制将父类的引用转成子类类型,向下转型。 //Cat ca=(Cat)an;//将父类的引用强制转换成子类类型 //ca.catchMouse();//an和ca指向的是同一只猫。 /*Cat c=new Cat(); c.eat(); Dog d=new Dog(); d.eat();*/ /*举个理解多态的例子 毕姥爷 x=new 毕老师();//毕老师装成毕姥爷去讲课 x.讲课(); 毕老师 y=(毕老师)x;//毕老师卸妆成为真正的自己。 y.看电影(); 发现自始至终都是毕老师一个人在扮演两个人,即多态。 */ //function(new Cat()); //function(new Dog()); DoAnimal da=new DoAnimal(); da.doSome(new Cat()); } public static void function(Animal a)//Animal a=new Cat();或者Animal a=new Dog(); { a.eat(); if(a instanceof Cat)//如果a是Cat类型的。 { Cat c=(Cat)a; c.jiao(); c.catchMouse(); } else if(a instanceof Dog)//如果a是Dog类型的。 { Dog c=(Dog)a; c.jiao(); c.kanJia(); } } }
标签:
原文地址:http://blog.csdn.net/iemdm1110/article/details/51344829