為什么 Java 不是純面向對象語言?


什么是純面向對象語言?

純面向對象語言或完全面向對象語言是指完全面向對象的語言,它支持或具有將程序內的所有內容視為對象的功能。它不支持原始數據類型(如 int,char,float,bool 等)。編程語言滿足七種標准可以就可以稱為純粹的面向對象語言,他們是:

  1. 封裝 / 數據隱藏
  2. 繼承
  3. 多態性
  4. 抽象化
  5. 所有預定義類型都是對象
  6. 所有用戶定義的類型都是對象
  7. 對對象執行的所有操作必須僅通過對象公開的方法

為什么 Java 不是純面向對象語言?

Java 支持屬性 1,2,3,4 和 6 但不支持上面給出的屬性 5 和 7. Java 語言不是純面向對象語言,因為它包含以下屬性:

原始數據類型例如對象:

Smalltalk 是一種 “純粹的” 面向對象的編程語言,與 Java 和 C++ 不同,因為作為對象的值和作為基本類型的值之間沒有區別。在 Smalltalk 中,原始值,例如整數,布爾值和字符也是對象。在 Java 中,我們將預定義類型作為非對象(基本類型)。

int a = 5;  
System.out.print(a);  

static 關鍵字:

當我們將一個類聲明為 Static 時,可以在不使用 Java 中的對象的情況下使用它。

包裝類:

包裝類提供了將基元轉換為對象和對象轉換為基元的機制。在 Java 中,您可以使用 Integer,Float 等代替 int,float 等。我們可以在不調用其方法的情況下與對象使用算術運算符。
即使使用 Wrapper 類也不會使 Java 成為純 OOP 語言,因為內部它將使用 Unboxing 和 Autoboxing 等操作。因此,如果您不是用 int Integer 創建並對其執行任何數學運算,那么 Java 將僅使用基本類型 int 。

public class BoxingExample  { 
	public static void main(String[] args){ 
			Integer i = new Integer(10); 
			Integer j = new Integer(20); 
			Integer k = new Integer(i.intValue() + j.intValue()); 
			System.out.println("Output: "+ k); 
	} 
} 

在上面的代碼中,有兩個問題,Java 無法像純 OOP 一樣工作:

  1. 在創建 Integer 類時,您使用的是基本類型 “int”,即數字 10,20。
  2. 在使用加法時,Java 使用原始類型 “int”( jdk1.5 需要拆箱操作,jdk1.5 及以后添加了新特性:自動裝箱和拆箱)。

“不積跬步,無以至千里”,希望未來的你能:有夢為馬 隨處可棲!加油,少年!

正是金九銀十跳槽季,為大家收集了 2019 年最新的面試資料,有文檔、有攻略、有視頻。

有需要的同學可以來在公眾號【Java 知己】,發送【面試】領取最新面試資料攻略!

到底如何才能 new 出這個對象?在線等...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM