JAVA多态性的深刻理解

来源:互联网 发布:tplink天线为什么知乎 编辑:程序博客网 时间:2024/05/16 17:04

1、多态的体现(应用):

父类引用指向自己及自己的子类

父类引用接收自己及自己的之类

2、多态的前提:

(1)要有继承或者实现关系

(2)存在覆盖

(3)父类引用指向子类

3、多态好处

提高了程序的扩展性

4、多态弊端

父类的引用只能访问父类的成员,如果要进行子类的特有方法的使用,则需要向下转型。

5、注意事项:

与重载同时出现时,当引用变量引用的方法不存在(针对的是覆写的方法,以及方法重载参数存在继承关系)时,存在以下顺序:

this.show(O);super.show(O); this.show(super(O)); super.show(super(O))


abstract class Animal

{

 abstract void eat();

}

class Cat extends Animal{

public void eat(){

  syso("吃鱼");

}

public void catchMouse(){

 syso("抓老鼠");

}

}

  1. class Dog extends Animal  
  2. {  
  3.     public void eat()  
  4.     {  
  5.         System.out.println("吃骨头");  
  6.     }  
  7.     public void kanJia()  
  8.     {  
  9.         System.out.println("看家");  
  10.     }  
  11. }  
  12.   
  13. class DuoTaiDemo  
  14. {  
  15.     public static void main(String[] args)  
  16.     {  
  17.         function(new Cat());  
  18.         function(new Dog());  
  19.           
  20.         Animal a = new Cat();//向上转型  
  21.         a.eat();  
  22.           
  23.         Cat c = (Cat)a;//向下转型  
  24.         c.catchMouse();  
  25.           
  26.           
  27.     }  
  28.       
  29.     public static void function(Animal a)  
  30.     {  
  31.         a.eat();  
  32.         //用于子类型有限  
  33.         //或判断所属类型进而使用其特有方法  
  34.         if(a instanceof Cat)  
  35.         {  
  36.             Cat c = (Cat)a;  
  37.             c.catchMouse();  
  38.         }  
  39.         else if(a instanceof Dog)  
  40.         {  
  41.             Dog c = (Dog)a;  
  42.             c.kanJia();  
  43.         }  
  44.     }  
  45.       
  46.       
  47. }     
优秀资源参考:

http://blog.csdn.net/cyq1028/article/details/6879088

http://www.jb51.net/article/34413.htm


0 0