爲什麼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等。我們可以在不調用其方法的情況下與對象使用算術運算符。

    String s1 ="ABC"+"A";
    

    即使使用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一樣工作:

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

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


關注公衆號:「Java 知己」,每天更新Java知識哦,期待你的到來!

  • 發送「1024」,免費領取 30 本經典編程書籍。
  • 發送「Group」,與 10 萬程序員一起進步。
  • 發送「面試」,領取BATJ面試資料、面試視頻攻略。
  • 發送「JavaEE 實戰」,領取《JavaEE 實戰》系列視頻教程。
  • 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章