java的三大特性之多态

来源:互联网 发布:网络匿名性的缺点 编辑:程序博客网 时间:2024/05/16 16:08
  1. ublic class Wine {  
  2.     public void fun1(){  
  3.         System.out.println("Wine 的Fun.....");  
  4.         fun2();  
  5.     }  
  6.       
  7.     public void fun2(){  
  8.         System.out.println("Wine 的Fun2...");  
  9.     }  
  10. }  
  11.   
  12. public class JNC extends Wine{  
  13.     /** 
  14.      * @desc 子类重载父类方法 
  15.      *        父类中不存在该方法,向上转型后,父类是不能引用该方法的 
  16.      * @param a 
  17.      * @return void 
  18.      */  
  19.     public void fun1(String a){  
  20.         System.out.println("JNC 的 Fun1...");  
  21.         fun2();  
  22.     }  
  23.       
  24.     /** 
  25.      * 子类重写父类方法 
  26.      * 指向子类的父类引用调用fun2时,必定是调用该方法 
  27.      */  
  28.     public void fun2(){  
  29.         System.out.println("JNC 的Fun2...");  
  30.     }  
  31. }  
  32.   
  33. public class Test {  
  34.     public static void main(String[] args) {  
  35.         Wine a = new JNC();  
  36.         a.fun1();  
  37.     }  
  38. }  
  39. -------------------------------------------------  
  40. Output:  
  41. Wine 的Fun.....  

  1. JNC 的Fun2...  

   多态中先是调用父类中的方法(该方法没有被重写),如果有重写那么就调用子类中的方法.....
 指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。





0 0