首頁  >  文章  >  Java  >  物件導向內容詳解

物件導向內容詳解

巴扎黑
巴扎黑原創
2017-06-26 09:27:531223瀏覽

無論物件導向或物件導向過程, 這兩個都是解決問題的思路而已, 只是角度不同.

# 導向過程:

強調解決問題的每一個步驟都親力親為,每一個細節都自己手動實現.


面向對象:

#使用特定功能對象去解決特定的問題, 每一個細節不需要關注,只需要創建對應的物件即可.


物件導向是基於過程導向的

類別和物件及他們的關係
# 類別: 具有相同特徵和行為(功能)的事物的統稱, 是一個抽象概念
 物件: 這類事物中某個確定的個體


類別和物件的關係
 一個類別可以建立多個物件, 類別是物件的抽象, 物件是類別的實例.

描述一個事物----> 類別

  特徵----> 成員屬性(成員變數) 
  行為(功能)---> 成員方法

類別的建立格式:
  修飾符 class 類位元{

  資料型別 成員變項名稱1;
  資料型別 成員變項名稱2;
  資料型別 成員變項名稱3;
  ...

#   成員法1 ;
  成員方法2;
  成員方法3;
  ...
  }

修飾符: public
類別名稱: 識別碼見名知意
#成員變數列表: 事物的特徵,只寫當前場景關注的特徵,沒必要把事物的所有特徵全都寫上. 寫法類似於定義變數
 成員方法: 事物的行為(功能) 只寫當前場景關注的行為(特徵)   寫法上類似於先前的定義方法, 差別在於此時寫的話要去掉static

 當一個類別第一次使用的時候要載入到方法區, 後續每一次再使用這個類別就不需要重複載入

成員變數和局部變數差異
1.定義的位置不同
局部變數: 定義在方法的內部
成員變數: 定義在類別的內部, 方法的外部
2.在記憶體中的存放位置不同
局部變數: 局部變數存放在堆疊區
成員變數: 成員變數存放在堆疊區域
3 .生命週期不同
局部變數: 隨著方法的呼叫而產生,隨著方法的結束而消失   相對較短
成員變數: 隨著物件創建而產生,隨著物件資料回收而消失  相對較長
4.初始值不同
局部變數: 沒有初始值, 使用之前必須進行賦值
成員變數: 有初始值, 引用類型null, 整數0 , 小數0.0 字元:空格, 布林false

封裝性愛
封裝是物件導向的三大特徵之一, 另外兩個是繼承 多型

類別名稱:Person
屬性:name ,age
方法:展示

封裝好處: 提高程式的安全性

對屬性封裝的步驟:
1 .使用private關鍵字修飾對應的屬性, 防止外界透過物件名稱.屬性的方式直接存取屬性
2.書寫對應屬性的set和get方法,  給外界一個存取屬性的通道

」封裝是物件導向程式語言對客觀世界的模擬,客觀世界裡成員變數都是隱藏在物件內部的,外界無法直接操作和修改。
封裝的原則:
將不需要對外提供的內容都隱藏起來。
把屬性隱藏,提供公共方法對其存取。
成員變數private,提供對應的getXxx()/setXxx()方法

好處:
透過方法控製成員變數的操作,提高了程式碼的安全性
 把程式碼用方法封裝,提升了程式碼的複用性

變數存取的就近原則:
當出現多個重名變數的時候, 目標程式碼使用的是離這行程式碼最近的那個變數

this可以解決的問題:
當局部變數和成員變數重名的時候, 想在特定的程式碼處存取成員變數, 就可以在目標行的變數名稱前面加this.
this只的是目前呼叫這個方法的物件
this 誰呼叫指的是誰

建構方法
是一個方法. 作用: 給物件的資料賦值預設值

定義格式:
  修飾符  方法名稱(參數清單){

#   若乾條初始化語句

 }
修飾符: public
方法名稱: 直接寫類別名稱 
參數列表: 跟之前定義方法寫形式參數一致
注意建構方法沒有回傳值類型

如果我們自己不手動寫無參數的建構方法, 系統會預設提供一個,如果我們自己手動書寫了無參的構造方法,
那系統就不會給提供,使用的時候直接使用我們自己寫的構造方法

構造方法也是方法也可以進行重載

但凡我們手寫了任意的構造方法, 系統就都不會給提供無參構造方法了,
當此時非要用無參的構造方法創建對象的時候, 必須自己手寫無參的建構方法

以上是物件導向內容詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn