多態介紹和總結,主板示例,Object 類

  1. /* 
  2. 多態介紹和總結,主板示例,Object 類 
  3. */  
  4.   
  5. 4.9 多態  
  6.     可以理解爲事物存在的多種體現形態。  
  7.     1.多態的體現:父類引用指向了自己的子類對象。  
  8.                 父類的引用可以接收自己的本類對象。  
  9.     2.多態的前提:  
  10.         1.必須是類與類之間有關係,要麼繼承,要麼實現。  
  11.         2.通常還有一個前提:存在覆蓋。  
  12.     3.多態的好處  
  13.         多態的出現大大的提高了程序的擴展性。  
  14.         多態的bei端:提高了擴展性,但是隻能使用父類的引用訪問父類中的成員。  
  15.         強制將父類的引用。轉成子類類型。向下轉型。Cat c = (Cat)a;  
  16.         不可以將父類的對象轉成子類類型。  
  17.         多態自始至終都是子類對象在做着變化。轉換前先 a instanceof Cat 判斷一下。  
  18.         a instanceof Cat :此處a 的實例是Cat嗎?  
  19.     4.多態的應用  
  20.   
  21.     5.多態使用的注意事項(特點)  
  22.         1.在多態中成員函數的特點:  
  23.         在編譯時期,參與引用型變量所屬的類中是否有調用方法,有就通過,沒有就編譯失敗。  
  24.         在運行時期,參閱對象所屬的類中是否有調用的方法。  
  25.         簡單總結:成員函數在多態調用時,。。。編譯看左邊,運行看右邊。  
  26.         靜態函數時,編譯運行都看左邊。  
  27.         在多態中成員變量無論編譯和運行,都參閱左邊。  
  28. //主板示例  
  29. interface PCI  
  30. {  
  31.     void close();  
  32.     void open();  
  33. }  
  34.   
  35. class MainBoard  
  36. {  
  37.     public void run(){  
  38.         System.out.println("mainboard run");  
  39.     }   
  40.   
  41.     public void usePCI(PCI p){  
  42.         if (p!=null)  
  43.         {  
  44.             p.open();  
  45.             p.close();  
  46.         }  
  47.     }  
  48. }  
  49.   
  50. class NetCard implements PCI  
  51. {  
  52.     public void open(){  
  53.         System.out.println("netcard run");  
  54.     }  
  55.     public void close(){  
  56.         System.out.println("netcard close");  
  57.     }  
  58. }  
  59.   
  60. class SoundCard implements PCI  
  61. {  
  62.     public void open(){  
  63.         System.out.println("soundcard run");  
  64.     }  
  65.     public void close(){  
  66.         System.out.println("soundcard close");  
  67.     }  
  68. }  
  69.   
  70. class DuoTaiDemo5  
  71. {  
  72.     public static void main(String[] args)  
  73.     {  
  74.         MainBoard mb = new MainBoard();  
  75.         mb.run();  
  76.         mb.usePCI(null);  
  77.         mb.usePCI(new NetCard());  
  78.         mb.usePCI(new SoundCard());  
  79.     }  
  80. }  
  81.   
  82. 需求:數據庫的操作  
  83. 1.連接數據庫。JDBC Hibernate  
  84. 2.操作數據庫。  
  85.     c create r read u update d delete  
  86. 3.關閉數據庫連接。  
  87. interface UserInfoDao  
  88. {  
  89.     public void add(User user);  
  90.     public void delete(User user);  
  91. }  
  92. class UseInfoByJDBC implements UserInfoDao  
  93. {  
  94.     public void add(User user)  
  95.     {  
  96.         1.JDBC連接數據庫  
  97.         2.使用SQL添加語句添加數據  
  98.         3.關閉連接。  
  99.     }  
  100.     public void delete(User user)  
  101.     {  
  102.         1.JDBC連接數據庫  
  103.         2.使用SQL刪除語句刪除數據  
  104.         3.關閉連接。  
  105.     }  
  106. }  
  107.   
  108. class UserInfoHibernate implements UserInfoDao  
  109. {  
  110.     public void add(User user)  
  111.     {  
  112.         1.Hibernate連接數據庫  
  113.         2.使用SQL添加語句添加數據  
  114.         3.關閉連接。  
  115.     }  
  116.     public void delete(User user)  
  117.     {  
  118.         1.Hibernate連接數據庫  
  119.         2.使用SQL刪除語句刪除數據  
  120.         3.關閉連接。  
  121.     }  
  122. }  
  123.   
  124. class DBOperate  
  125. {  
  126.     public static void main(String[] args)  
  127.     {  
  128.         //UserInfoByJDBC ui = new UserInfoByJDBC();  
  129.         //ui.add(user);  
  130.         //ui.delete(user);  
  131.         UserInfoDao ui = ;  
  132.         ui.add(user);  
  133.         ui.delete(user);  
  134.   
  135.     }  
  136. }  
  137.   
  138. Object 類 是java所有對象的上帝。每個類都使用object作爲超類。  
  139.         該類中定義的是所有對象都具備的功能。  
  140.   
  141.         equals比較的是地址。  
  142.   
  143.         重寫 object的equqls,要注意判斷和轉換動作  
  144.     `   public boolean equals(Object obj)  
  145.         {  
  146.             if (!(obj instanceof Demo))  
  147.             {  
  148.                 return false;  
  149.             }  
  150.             Demo d = (Demo)obj;  
  151.             return this.num == d.num;  
  152.         }  
  153.           
  154.     object 類的 toString()方法。  
  155.         默認顯示 類名和哈希值。  
  156.   
  157.         一般要覆蓋toString()方法。顯示自己的內容  
  158.         public String toString(){  
  159.             return "demo:"+num;  
  160.         }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章