从实例学习多态(Polymorphism [pɔli'mɔ:fizm])

什么是多态?

研究多态,先要知道继承,没有继承的关系,多态就无从谈起。

看下面的代码例子:

Parent.java,父类

  
  
  
  
  1. package com.gyabooks.test; 
  2.  
  3. public class Parent { 
  4.      
  5.     String sex="男"
  6.     String height="180cm"
  7.     String weight="75kg"
  8.      
  9.     public void printInfo(){ 
  10.         System.out.println("父亲基本信息输出:"); 
  11.         System.out.println("性别:"+sex); 
  12.         System.out.println("身高:"+height); 
  13.         System.out.println("体重:"+weight); 
  14.         System.out.println(); 
  15.     } 

Son.java,子类

  
  
  
  
  1. package com.gyabooks.test; 
  2.  
  3. public class Son extends Parent { 
  4.     String sex="男"
  5.     String height="120cm"
  6.     String weight="25kg"
  7.     public void printInfo(){ 
  8.         System.out.println("儿子基本信息输出:"); 
  9.         System.out.println("性别:"+sex); 
  10.         System.out.println("身高:"+height); 
  11.         System.out.println("体重:"+weight); 
  12.         System.out.println(); 
  13.     } 

Daughter.java,子类

  
  
  
  
  1. package com.gyabooks.test; 
  2.  
  3. public class Daughter extends Parent{ 
  4.      
  5.     String sex="女"
  6.     String height="120cm"
  7.     String weight="25kg"
  8.      
  9.     public void printInfo(){ 
  10.         System.out.println("女儿基本信息输出:"); 
  11.         System.out.println("性别:"+sex); 
  12.         System.out.println("身高:"+height); 
  13.         System.out.println("体重:"+weight); 
  14.         System.out.println(); 
  15.     } 

Test.java,测试类

  
  
  
  
  1. package com.gyabooks.test; 
  2.  
  3. public class Test { 
  4.     public static void main(String[] args) { 
  5.         Parent p = new Parent(); 
  6.         Son s = new Son(); 
  7.         Daughter d=new Daughter(); 
  8.  
  9.         p.printInfo(); 
  10.         s.printInfo(); 
  11.         d.printInfo(); 
  12.  
  13.         p = s; 
  14.         p.printInfo(); 
  15.         p=d; 
  16.         p.printInfo(); 
  17.     } 

程序输出结果:

  
  
  
  
  1. 父亲基本信息输出: 
  2. 性别:男 
  3. 身高:180cm 
  4. 体重:75kg 
  5.  
  6. 儿子基本信息输出: 
  7. 性别:男 
  8. 身高:120cm 
  9. 体重:25kg 
  10.  
  11. 女儿基本信息输出: 
  12. 性别:女 
  13. 身高:120cm 
  14. 体重:25kg 
  15.  
  16. 儿子基本信息输出: 
  17. 性别:男 
  18. 身高:120cm 
  19. 体重:25kg 
  20.  
  21. 女儿基本信息输出: 
  22. 性别:女 
  23. 身高:120cm 
  24. 体重:25kg 

看以上的红色加粗部分,把子类赋给了Parent变量p,但是p此时表现的行为状态却不是父类行为,父类悄无声息地调用了子类的方法,“父亲”的行为多变,在面向OOP领域里,这种行为就叫做多态。

维基多态定义为:多态(英语:Polymorphism),是指面向对象程序运行时,相同的消息可能会送给多个不同的类之对象,而系统可依据对象所属类,引发对应类的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作称之。

你可能感兴趣的:(职场,多态,Polymorphism,休闲,实例学习多态)