Java 面向对象语言基础
面向過程 就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
面向對象 是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
1、 區分類、對象和對象的引用
對象:對象是類的一個實例,有狀態和行為。例如,一條狗是一個對象,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
類:類是一個模板,它描述一類對象的行為和狀態。
創建對象
對象是根據類創建的。在Java中,使用關鍵字new來創建一個新的對象。創建對象需要以下三步:
- 聲明:聲明一個對象,包括對象名稱和對象類型。
- 實例化:使用關鍵字new來創建一個對象。
- 初始化:使用new創建對象時,會調用構造方法初始化對象。
運行結果
A Pet object is created. Hi, I'm Snoppy !【說明】
- 類中的內容統稱為成員 ----> 成員變量、成員方法。
- 只能通過引用名來操控對象,不能通過屬性值。如本例中的a.name、a.showMe(),均為正確寫法。
- 一個Java文件可包含多個類,但是只能存在一個public修飾的類,因為文件名必須與public類同名。若無public類,則文件取名只要滿足標識符命名規則即可。文件中每個類(或接口),編譯后都會產生一個單獨的.class文件與之對應。
- 類成員可以缺省,俗稱空類
對象和對象引用的內存管理
1、內存空間的自動管理機制:基于棧的內存管理模式
特色:棧空間的數據被系統自動管理,即在函數調用時自動創建數據空間,在函數運行結束時自動釋放數據空間。棧空間中的數據與特定函數直接相關。程序員在函數中定義的所有變量,無論是基本類型還是引用類型,均存儲在棧空間。
2、內存空間的手動管理機制:基于堆的內存管理模式
特色:在程序中給出申請或釋放內存單元的指令,可實現內存單元的按需分配或釋放。其中堆是一種無結構的內存區域,用于執行期間內存單元的動態分配和釋放。所有對象均存儲于堆空間。
2、 構造函數
關于java類中的構造方法:
-
構造方法又被稱為構造函數/構造器/Constructor
-
構造方法語法結構:
[修飾符列表] 構造方法名(形式參數列表){
構造方法體;
} -
普通方法的語法結構:
[修飾符列表] 返回值類型 方法名 (形式參數列表){
方法體
} -
對于構造方法來說,“返回值類型不需要指定,并且也不能寫void,
只要寫上void,那么這個方法變成普通方法 -
構造方法的方法名必須和類名保持一致
-
構造方法的作用?
-構造方法存在的意義是,通過構造方法的調用,可以創建對象
-初始化實例變量的內存空間 -
構造方法應該怎么調用?
-普通方法:方法修飾符中有static的時候:類名.方法名(實參列表)、方法修飾符列表中沒有static的時候:引用.方法名(實參列表)
-new 構造方法名(實參列表) -
構造方法調用之后,有返回值嗎?
每一個構造方法實際上執行結束后都有返回值,但是這個"return值;"這樣的語句不需要寫。構造方法結束的時候java程序自動返回值 并且返回值類型是構造方法所在類的類型,由于構造方法的返回值類型就是類本身,所以返回值類型不需要編寫 -
當一個類中沒有定義任何構造方法的話,系統默認給該類提供一個無參數的構造方法,這個構造方法被稱為缺省構造器
-
當一個類顯示的將構造方法定義出來了,那么系統不再默認為這個類提供缺省構造器。建議手動提供
-
構造方法支持重載機制。在一個類當中編寫多個構造方法,這多個構造方法顯然已經構成方法重載機制
運行結果
帶有int類型參數的構造器
帶有String類型的構造器
帶有int,String類型的構造器
do some!
do some!
do other!
運行結果
構造函數 P() 被執行!
構造函數 B() 被執行!
構造函數 C() 被執行!
顯然,若要構造出C的對象,必須先構造出其源自超類B的對象部分。同理,要構造出B的對象,則應先構造出A的對象部分。這說明在構造子類時,會自動調用超類的構造函數,調用次序與派生次序相同。
? 空指針引用
所謂空指針引用,就是當引用變量未關聯任何對象時,卻引用其成員。
? 相等判斷
對象相等有兩層含義:
1)兩對象實為同一對象,即對象的起始地址相同;
2)兩對象不是同一對象,但對象的特定屬性值對應相等。
總結
以上是生活随笔為你收集整理的Java 面向对象语言基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人博客网站 Welcome All
- 下一篇: python-DBSCAN密度聚类