首頁 Java java教程 物件導向內容詳解

物件導向內容詳解

Jun 26, 2017 am 09:27 AM
this 物件 封裝 面向

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

# 導向過程:

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


面向對象:

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


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

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


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

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

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

類別的建立格式:
  修飾符 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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用PHP的json_encode()函數將陣列或物件轉換為JSON字串 使用PHP的json_encode()函數將陣列或物件轉換為JSON字串 Nov 03, 2023 pm 03:30 PM

JSON(JavaScriptObjectNotation)是一種輕量級的資料交換格式,已成為Web應用程式之間資料交換的常用格式。 PHP的json_encode()函數可以將陣列或物件轉換為JSON字串。本文將介紹如何使用PHP的json_encode()函數,包括語法、參數、傳回值以及具體的範例。語法json_encode()函數的語法如下:st

集邦諮詢:英偉達 Blackwell 平台產品帶動台積電今年 CoWoS 產能提升 150% 集邦諮詢:英偉達 Blackwell 平台產品帶動台積電今年 CoWoS 產能提升 150% Apr 17, 2024 pm 08:00 PM

本站4月17日消息,集邦諮詢(TrendForce)近日發布報告,認為英偉達Blackwell新平台產品需求看漲,預估帶動台積電2024年CoWoS封裝總產能提升逾150%。英偉達Blackwell新平台產品包含B系列的GPU,以及整合英偉達自家GraceArmCPU的GB200加速卡等。集邦諮詢確認為供應鏈目前非常看好GB200,預估2025年出貨量預計超過百萬片,在英偉達高階GPU中的佔比達到40-50%。在英偉達計畫下半年交付GB200以及B100等產品,但上游晶圓封裝方面須進一步採用更複

如何將 MySQL 查詢結果陣列轉換為物件? 如何將 MySQL 查詢結果陣列轉換為物件? Apr 29, 2024 pm 01:09 PM

將MySQL查詢結果陣列轉換為物件的方法如下:建立一個空物件陣列。循環結果數組並為每一行建立一個新的物件。使用foreach迴圈將每一行的鍵值對賦給新物件的對應屬性。將新物件加入到物件數組中。關閉資料庫連線。

使用Python的__contains__()函數定義物件的包含操作 使用Python的__contains__()函數定義物件的包含操作 Aug 22, 2023 pm 04:23 PM

使用Python的__contains__()函數定義物件的包含操作Python是一種簡潔而強大的程式語言,提供了許多強大的功能來處理各種類型的資料。其中之一是透過定義__contains__()函數來實現物件的包含操作。本文將介紹如何使用__contains__()函數來定義物件的包含操作,並且給予一些範例程式碼。 __contains__()函數是Pytho

AMD 'Strix Halo” FP11 封裝尺寸曝光:和英特爾 LGA1700 相當,比 Phoenix 大 60% AMD 'Strix Halo” FP11 封裝尺寸曝光:和英特爾 LGA1700 相當,比 Phoenix 大 60% Jul 18, 2024 am 02:04 AM

本站7月9日訊息,AMDZen5架構「Strix」系列處理器會有兩種封裝方案,其中較小的StrixPoint將採用FP8封裝,而StrixHalo將會採用FP11封裝。圖源:videocardz訊息源@Olrak29_最新曝料稱StrixHalo的FP11封裝尺寸為37.5mm*45mm(1687平方毫米),和英特爾AlderLake、RaptorLakeCPU的LGA-1700封裝尺寸相同。 AMD最新的PhoenixAPU採用FP8封裝方案,尺寸為25*40mm,這意味著StrixHalo的F

使用Python的__le__()函數定義兩個物件的小於等於比較 使用Python的__le__()函數定義兩個物件的小於等於比較 Aug 21, 2023 pm 09:29 PM

標題:使用Python的__le__()函數定義兩個物件的小於等於比較在Python中,我們可以透過使用特殊方法來定義物件之間的比較操作。其中之一就是__le__()函數,它用來定義小於等於比較。 __le__()函數是Python中的一個魔法方法,並且是一種用於實現「小於等於」操作的特殊函數。當我們使用小於等於運算子(<=)比較兩個物件時,Python

數組和物件在 PHP 中的差異是什麼? 數組和物件在 PHP 中的差異是什麼? Apr 29, 2024 pm 02:39 PM

PHP中,數組是有序序列,以索引存取元素;物件是具有屬性和方法的實體,透過new關鍵字建立。數組存取透過索引,物件存取通過屬性/方法。數組值傳遞,物件參考傳遞。

PHP中的封裝技術及應用 PHP中的封裝技術及應用 Oct 12, 2023 pm 01:43 PM

PHP中的封裝技術及應用封裝是物件導向程式設計中的重要概念,它指的是將資料和資料的操作封裝在一起,以便提供對外部程式的統一存取介面。在PHP中,封裝可以透過存取控制修飾符和類別的定義來實現。本文將介紹PHP中的封裝技術及其應用場景,並提供一些具體的程式碼範例。一、封裝的存取控制修飾符在PHP中,封裝主要透過存取控制修飾符來實現。 PHP提供了三個存取控制修飾符,

See all articles