1. 程式人生 > >Java重要知識點——面向物件的總結概述

Java重要知識點——面向物件的總結概述

三:面向物件:★★★★★

特點: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變數就引用了該實體。(指向了該物件)