標籤:成員 特點 學習 多個 指定位置 獨立 區別 規範 私人
三:物件導向:★★★★★
特點:1:將複雜的事情簡單化。
2:物件導向將以前的過程中的執行者,變成了指揮者。
3:物件導向這種思想是符合現在人們思考習慣的一種思想。
過程和對象在我們的程式中是如何體現的呢?過程其實就是函數;對象是將函數等一些內容進行了封裝。
匿名對象使用情境:
1:當對方法只進行一次調用的時候,可以使用匿名對象。
2:當對象對成員進行多次調用時,不能使用匿名對象。必須給對象起名字。
在類中定義其實都稱之為成員。成員有兩種:
1:成員變數:其實對應的就是事物的屬性。
2:成員函數:其實對應的就是事物的行為。
所以,其實定義類,就是在定義成員變數和成員函數。但是在定義前,必須先要對事物進行屬性和行為的分析,才可以用代碼來體現。
private int age;//私人的存取權限最低,只有在本類中的訪問有效。
注意:私人僅僅是封裝的一種體現形式而已。
私人的成員:其他類不能直接建立對象訪問,所以只有通過本類對外提供具體的訪問方式來完成對私人的訪問,可以通過對外提供函數的形式對其進行訪問。
好處:可以在函數中加入邏輯判斷等操作,對資料進行判斷等操作。
總結:開發時,記住,屬性是用於儲存資料的,直接被訪問,容易出現安全隱患,所以,類中的屬性通常被私人化,並對外提供公用的存取方法。
這個方法一般有兩個,規範寫法:對於屬性 xxx,可以使用setXXX(),getXXX()對其進行操作。
類中怎麼沒有定義主函數呢?
注意:主函數的存在,僅為該類是否需要獨立運行,如果不需要,主函數是不用定義的。
主函數的解釋:保證所在類的獨立運行,是程式的入口,被jvm調用。
成員變數和局部變數的區別:
1:成員變數直接定義在類中。
局部變數定義在方法中,參數上,語句中。
2:成員變數在這個類中有效。
局部變數只在自己所屬的大括弧內有效,大括弧結束,局部變數失去範圍。
3:成員變數存在於堆記憶體中,隨著對象的產生而存在,消失而消失。
局部變數存在於棧記憶體中,隨著所屬地區的運行而存在,結束而釋放。
建構函式:用於給對象進行初始化,是給與之對應的對象進行初始化,它具有針對性,函數中的一種。
特點:
1:該函數的名稱和所在類的名稱相同。
2:不需要定義傳回值類型。
3:該函數沒有具體的傳回值。
記住:所有對象建立時,都需要初始化才可以使用。
注意事項:一個類在定義時,如果沒有定義過建構函式,那麼該類中會自動產生一個空參數的建構函式,為了方便該類建立對象,完成初始化。如果在類中自訂了建構函式,那麼預設的建構函式就沒有了。
一個類中,可以有多個建構函式,因為它們的函數名稱都相同,所以只能通過參數列表來區分。所以,一個類中如果出現多個建構函式。它們的存在是以重載體現的。
建構函式和一般函數有什麼區別呢?
1:兩個函數定義格式不同。
2:建構函式是在對象建立時,就被調用,用於初始化,而且初始化動作只執行一次。
一般函數,是對象建立後,需要調用才執行,可以被調用多次。
什麼時候使用建構函式呢?
分析事物時,發現具體事物一出現,就具備了一些特徵,那就將這些特徵定義到建構函式內。
構造代碼塊和建構函式有什麼區別?
構造代碼塊:是給所有的對象進行初始化,也就是說,所有的對象都會調用一個代碼塊。只要對象一建立。就會調用這個代碼塊。
建構函式:是給與之對應的對象進行初始化。它具有針對性。
Person p = new Person();
建立一個對象都在記憶體中做了什麼事情?
1:先將硬碟上指定位置的Person.class檔案載入進記憶體。
2:執行main方法時,在棧記憶體中開闢了main方法的空間(壓棧-進棧),然後在main方法的棧區分配了一個變數p。
3:在堆記憶體中開闢一個實體空間,分配了一個記憶體首地址值。new
4:在該實體空間中進行屬性的空間分配,並進行了預設初始化。
5:對空間中的屬性進行顯示初始化。
6:進行實體的構造代碼塊初始化。
7:調用該實體對應的建構函式,進行建構函式初始化。()
8:將首地址賦值給p ,p變數就引用了該實體。(指向了該對象)
Java學習(三)物件導向