面向對象特徵,類的變量和方法,封裝,構造函數,this關鍵字

  1. /* 
  2. 面向對象特徵,類的變量和方法,封裝,構造函數,this關鍵字 
  3. */  
  4.   
  5. 3.1.1理解面向對象  
  6. 。面向對象是相對面向過程而言  
  7. 。面向對象和麪向過程都是一種思想.  
  8. 。面向過程,強調的是功能行爲  
  9. 。面向對象,將功能進行封裝,強調具備了功能的對象  
  10. 。面向過程是基於面向過程的  
  11.     舉例,把大象放進冰箱裏。找畢老師買電腦。  
  12.     比較牛的一句話,萬物皆對象。屬於境界。  
  13.     寫程序時,先定義對象。再封裝功能。  
  14.     沒有對象自己造一個對象,再封裝功能。  
  15. 人開門,名詞提煉法。  
  16.     人{  
  17.         開門(門)  
  18.         {  
  19.         門.開();  
  20.         }  
  21.         }  
  22.     門  
  23.     {  
  24.         開(){操作門軸等}  
  25.     }  
  26. 面向對象:三個特徵:封裝,繼承,多態。  
  27. //找對象,建立對象,使用對象,維護對象的關係。  
  28. 類和對象的關係。  
  29.     類就是:對現實生活中事物的描述。  
  30.     對象:就是這類事物,實實在在存在的個體。  
  31.     描述事物其實就是在描述事物的屬性和行爲。  
  32.     屬性對應是類中的變量,行爲對應類中的方法。  
  33.     class Car  
  34.     {  
  35.         String color = "紅色";//車顏色  
  36.         int num = 4;//輪胎數  
  37.         void run() //行爲  
  38.         {  
  39.             System.out.println(color +"..."+num);  
  40.         }  
  41.     }  
  42.   
  43.     class CarDemo  
  44.     {  
  45.         public static void main(String[] args)  
  46.         {  
  47.             //生產汽車,在java中通過new 操作符完成。  
  48.             //就是在堆內存中產生一個對象。  
  49.             Car c = new Car();//c就是類類型變量,指向對象  
  50.   
  51.             //將已有車的顏色改成藍色,指揮對象做事,方式:對象。對象成員  
  52.             c.color = "blue";  
  53.             c.run();  
  54.   
  55.             Car c1 = new Car();  
  56.   
  57.             c1.run();  
  58.         }  
  59.     }  
  60.   
  61. 成員變量和局部變量  
  62. 作用範圍:  
  63.     成員變量作用於整個類。  
  64.     局部變量作用於方法中,或語句中  
  65. 在內存中的位置,  
  66.     成員變量:在堆內存中,因爲對象的存在,纔在內存中存在。  
  67.     局部變量:存在棧內存中。  
  68.   
  69. 3.2.6 匿名對象  
  70.     匿名對象是對象的簡化形式  
  71.     匿名對象兩種使用情況  
  72.         當對對象方法僅進行一次調用的時候  
  73.         匿名對象可以作爲實際參數進行傳遞  
  74.         注意:每new一個就是創建一個新對象。  
  75.   
  76.   
  77. 3.3 封裝(Encapsulation)  
  78.     封裝是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式  
  79.     好處:將變化隔離  
  80.             便於使用  
  81.             提高重用性  
  82.             提高安全性  
  83.     封裝原則:  
  84.         將不需要對外提供的內容都隱藏起來  
  85.         把屬性都隱藏,提供公共方法對其訪問。  
  86.   
  87.   
  88.         關鍵字  
  89.         private:私有修飾符,用於修飾類中的成員(如成員變量和成員函數)  
  90.         私有後,只在本類中有效。  
  91.         注意:私有隻是封裝的一種表現形式。  
  92.         p.age=-20;  
  93.         p.setAge() = -40;  
  94.         這二個不是一樣的嗎?  
  95.         不一樣,我們可以在setAge()中先進行邏輯判斷。對訪問的數據進行操作,  
  96.         提高代碼的健壯性。  
  97.         堆內存中的成員變量都有初始化值。自己初始化。  
  98.         局部變量要自己賦值才能參與運算。  
  99.   
  100. 3.4構造函數  
  101.     特點:  
  102.     1.函數名與類名相同  
  103.     2.不定義返回值類型(void 都不用)  
  104.     3.不可以寫return語句  
  105.   
  106.     作用:給對象進行初始化,  
  107.     注意:1默認構造函數的特點  
  108.         當一個類中沒有定義構造函數時,那麼系統會默認給該類加入一個空參數  
  109.         的構造函數。。。當在類中自定義了構造函數後,默認構造函數就沒有了。  
  110.         2.多個構造函數是以重載的形式存在。  
  111.   
  112.         構造函數是在對象一建立就運行,給對象初始化  
  113.         而一般方法是對象調用才執行,是給對象添加對象具備的功能。  
  114.         一個對象建立,構造函數只運行一次。  
  115.         而一般方法可以被該對象調用多次。  
  116.   
  117.         什麼時候定義構造函數呢?  
  118.         當分析事物時,該事物存在具備一些特性或者行爲,那麼將這些內容定義  
  119.         在構造函數中。  
  120.           
  121.     構造代碼塊。直接寫在類裏的 {  } 和構造函數並行。  
  122.         作用:給對象進行初始化,對象一建立就運行,而且優先於構造函數運行。  
  123.         和構造函數的區別:  
  124.         構造代碼塊是給所有對象進行統一初始化。所有的共性初始化內容。  
  125.         構造函數是給特定對象指點初始化。  
  126.   
  127.         私有化所有構造函數,我們就建立不了對象。(單例模式)  
  128.   
  129. this關鍵字。 1. 用於區分局部變量和成員變量同名的情況。  
  130.     this代表的是什麼呢?  
  131.     哪個對象調用this所在函數,this就代表哪個對象。  
  132.   
  133.     this的應用:當定義類中的功能時,該函數內部要用到調用該函數的對象時,  
  134.     這時用this表示這個對象。  
  135.   
  136.     2.this在構造函數間的可以互相調用。  
  137.         構造函數不能直接調用構造函數,要用this(name);  
  138.         注意:this語句只能放在構造函數的第一行。  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章