什么是OOPS?
面向對象編程是一種編程概念,其工作原理是對象是程序中最重要的部分。它允許用戶創建他們想要的對象,然后創建處理這些對象的方法。操作這些對象以獲得結果是面向對象編程的目標。
面向對象編程通常稱為OOP,用於Java等現代編程語言
核心OOPS概念
1)類
該類是一組類似的實體。它只是一個邏輯組件,而不是物理實體。例如,如果你有一個名為“昂貴的汽車”的類,它可能有梅賽德斯,寶馬,豐田等物品。它的屬性(數據)可以是這些汽車的價格或速度。雖然可以使用這些車輛進行駕駛,倒車,制動等方法。
2)對象
可以將對象定義為類的實例,並且程序中可以有多個類的實例。對象包含數據和函數,它們對數據進行操作。例如 - 椅子,自行車,標記,筆,桌子,汽車等。
3)繼承
繼承是一種OOPS概念,其中一個對象獲取父對象的屬性和行為。它在兩個類之間創建了父子關系。它為組織和構建任何軟件提供了強大而自然的機制。
4)多態性
多態性是指變量,對象或函數采用多種形式的能力。例如,在英語中,動詞_運行_具有不同的含義,如果將您它_用於筆記本電腦_,_腳踏競賽_狀語從句:商務。在這里,我們基於一起與其使用的其他詞語來理解_運行_的含義。同樣也適用於多態性。
5)抽象
抽象是表示基本特征而不包括背景細節的行為。這是一種創建適合特定應用程序的新數據類型的技術。例如,在駕駛汽車時,您不必擔心其內部工作。在這里你只需要關注方向盤,齒輪,加速器等零件。
6)封裝
封裝是一種包裝數據和代碼的OOP技術。在這個OOPS概念中,類的變量總是對其他類隱藏。它只能使用當前類的方法訪問。例如 - 在學校里,沒有班級,學生就不可能存在。
7)關聯
關聯是兩個對象之間的關系。它定義了對象之間的多樣性。在OOP概念中,所有對象都有其獨立的生命周期,並且沒有所有者。例如,許多學生可以與一位教師聯系,而一名學生也可以與多位教師聯系。
8)聚合
在這種技術中,所有對象都有其獨立的生命周期。但是,所有權使得子對象不能屬於另一個父對象。例如,考慮班級/對象部門和教師。在這里,單個教師不能屬於多個部門,但即使我們刪除了部門,教師對象也永遠不會被銷毀。
9)組合
組合是聚合的一種特殊形式。它也被稱為“死亡”關系。子對象沒有生命周期,因此當父對象刪除時,所有子對象也將自動刪除。為此,我們舉一個房子和房間的例子。任何房子都可以有幾個房間。一個房間不能成為兩個不同房屋的一部分。所以,如果你刪除房子的房間也將被刪除。
OOPS的優點:
- OOP為程序提供易於理解和清晰的模塊化結構。
- 為面向對象程序創建的對象可以在其他程序中重用。因此它節省了大量的開發成本。
- 大型程序很難編寫,但如果開發和設計團隊遵循OOPS概念,那么他們可以更好地設計並具有最小的缺陷。
- 它還增強了程序模塊性,因為每個對象都是獨立存在的
借助於示例,將OOPS與其他編程風格進行比較
讓我們通過示例來理解OOP與其他編程方法的不同之處。
編程語言可以分為3種主要類型
- 非結構化編程語言:順序具有控制流的所有編程語言中最原始的語言在程序中重復代碼
- 結構化編程語言:非具有順序控制流函數的使用網求允許重用代碼。
- 面向對象的編程:將數據和動作結合在一起。
讓我們通過一個例子來理解這三種類型。
假設您要創建具有類似功能的銀行軟件
- 存款
- 取款
- 顯示余額
非結構化編程語言
所有編程語言中最早的是非結構化編程語言。非結構化編程語言中的銀行應用程序的基本代碼將具有一個帳號的兩個變量和帳戶余額的另一個變量
int account_number = 20;
int account_balance = 100;
假設存入100美元。
account_balance = account_balance + 100
接下來,您需要顯示帳戶余額。
printf("Account Number=%d",account_number)
printf("Account Balance=%d",account_balance)
現在撤回50美元的金額。
account_balance = account_balance - 50
同樣,您需要顯示帳戶余額。
printf("Account Number=%d",account_number)
printf("Account Balance=%d",account_balance)
對於任何進一步的存款或取款操作 - 您將代碼重復重復相同的行。
結構化編程
隨着結構化編程的到來,代碼上的重復行被放入諸如函數或方法之類的結構中。只要需要,就可以對函數進行簡單的調用。
面向對象編程
在我們的程序中,我們處理數據或對數據執行特定操作。
實際上,在任何軟件程序中擁有數據並對該數據執行某些操作是非常基本的特征。
軟件編程專家思想結合數據和操作。因此,面向對象編程的誕生通常被稱為OOPS。
OOPS中的相同代碼將具有相同的數據,並且對數數執行某些操作。
Class Account{
int account_number;
int account_balance;
public void showdata(){
system.out.println(“Account Number”+account_number)
system.outprintln(“Account Balance”+ account_balance)
}
}
通過結合數據和行動,我們將獲得比結構編程更多的優勢,即
- 抽象化
- 封裝
- 遺產
- 多態性
“不積跬步,無以至千里”,希望未來的你能:有夢為馬 隨處可棲!加油,少年!
關注公眾號:「Java 知己」,每天更新Java知識哦,期待你的到來!
- 發送「1024」,免費領取 30 本經典編程書籍。
- 發送「Group」,與 10 萬程序員一起進步。
- 發送「面試」,領取BATJ面試資料、面試視頻攻略。
- 發送「JavaEE 實戰」,領取《JavaEE 實戰》系列視頻教程。
- 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。