什麼是純面嚮對象語言?
純面嚮對象語言或完全面嚮對象語言是指完全面向對象的語言,它支持或具有將程序內的所有內容視爲對象的功能。它不支持原始數據類型(如int,char,float,bool等)。編程語言滿足七種標準可以就可以稱爲純粹的面嚮對象語言,他們是:
- 封裝/數據隱藏
- 繼承
- 多態性
- 抽象化
- 所有預定義類型都是對象
- 所有用戶定義的類型都是對象
- 對對象執行的所有操作必須僅通過對象公開的方法
爲什麼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 實戰》系列視頻教程。
- 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。