1. 程式人生 > >Java如何實現面向對象思想

Java如何實現面向對象思想

函數 面向對象 給定 width cor 元素 過程 生命 傳輸

“在JAVA中,我們所做的所有工作,就是定義類,創建這些類的對象,並傳消息給這些對象”

對於JAVA面向對象思想的學習,依照此理解順序

1、理解面向對象的總體思想與主要特性,例如封裝,繼承,多態,超類,集合,泛型,多線程等等。

2、接下來,也就是本章節講解的內容,我們需要進一步了解,利用JAVA語言本身進行面向對象程序設計的過程。

技術分享圖片

操縱對象的“引用”

  任何一種編程語言,都擁有其操縱內存中元素的方式。通過引用對象操作內存,可以把引用視為一個遙控器,將對象視為一個電視。

  最簡單的方式創建一個字符串對象的引用

  String s; 該代碼中,String作為一個類型,而s是一個引用。註意!!在這裏,s並不是一個對象,它只是一個引用,一個沒有指定電視機的遙控器!!!!

創建一個對象及存儲位置

  String s = new String("ss"); //創建了字符串對象的引用s,指向存儲著內容“ss”的String對象。

  那麽,數據存儲在什麽地方呢?

  (1)、寄存器,最快的存儲區,位於CPU內部,數量有限,在JAVA中無法手動分配。

  (2)、堆棧,位於通過RAM(Random Access Memory)中,Java的對象引用存儲在堆棧中。

  (3)、堆,是一種通用的內存池,存儲所有的JAVA對象

  (4)、常量存儲,常量值通常存放在程序代碼內部,這樣不會被改變,保證了安全性。

  (5)、非RAM存儲,代表是流對象持久化對象,它們都遊離於程序的控制以外。

在流對象中,對象轉換為字節流,並在不同機器中傳輸數據;在持久化對象中,對象被放置在磁盤上,並持久保持自己的狀態。

特例:基本類型(基本類型在堆中只存儲“值”,而不是對象)

技術分享圖片

  在程序設計過程中經常使用到的基本類型,普通類型將“對象”存儲在“堆”中,而基本類型是創建一個沒有引用的“自動變量”,這個變量直接存儲值,並置於堆棧中(和引用寶寶們住在一起)。

  JAVA固定了每種基本類型所占用的空間大小,並且不可改變,基本類型共8個,分別是boolean,char,byte,short,int,long,float,double,void。創建一個基本數據類型:

  int i = 1;

  此時,變量 i 的占用存儲空間大小為32bits,存儲於堆棧,其值為1 但它還不是一個對象;

  如果想用對象來表示一個基本數據類型,則需要使用包裝器類。包裝器類使得我們可以在“堆”中創建一個普通對象,並用它來表示基本數據類型。例如:

  Integer i = new Integer(1);

  了解完基本數據類型,再看看另外一方面,幾乎所有的編程語言都支持定義數組,那麽JAVA中的數組又有什麽特征?當JAVA創建了一個數組對象,其實也是創建了一個引用數組。JAVA確保數組會被初始化,且不能在它的範圍之外被訪問。JAVA會對數組執行範圍檢查,一旦調用到引用為NULL(比如調用了越界的數據對象引用),即會報錯。

  默認值:屬於基本數據類型的變量具有默認值,但要在它們作為類的成員使用時,JAVA才能確保給定其默認值,也就是說,變量作為類成員時會獲得初始化,而局部變量則不會獲得初始化(比如方法中的基本數據類型變量一定要手動初始化,不然系統就會報錯)。

自動銷毀對象

  對象的生命周期問題在JAVA中得到了自動化的解決。JAVA中有一個垃圾回收期,用來監視new創建的所有對象,並且辨別不再使用的對象。在恰當的時間,釋放這些對象的內存空間。如此一來,JAVA程序員不需要操心內存分配與內存釋放問題,只需要創建對象,然後使用對象。

創建一個類(新類是新的引用數據類型)

創建一個類表示的語境:“我將告訴你,一個新類型的對象會是什麽樣子的”。

創建完一個新的數據類型,我們就可以創建引用和指向對象,而在JAVA中,我們所做的所有工作,就是定義類,創建這些類的對象,並傳消息給這些對象。(超級精辟)

方法、參數和返回值

“方法”其實就是“函數”,是類中的子程序。方法包括①、名稱 ②、參數 ③、返回值 ④、方法體

方法名和參數列表唯一地標識出某個方法。

假設現在有1個方法method(),它的返回值是boolean,有一個和method()方法同屬於一個類的對象a,進行調用 boolean b = a.method();這句代碼通俗的理解就是發送消息給a對象,命令它調用己身的method()方法

我們了解如何編寫一個簡單的Java程序之後,對其基本思想也有一個總體的認識,但是如果想讓程序更靈活,有邏輯性,這還不夠,所以我們接下去還要額外去了解JAVA對語言邏輯所提供的支持。

Java如何實現面向對象思想