什么是純面向對象語言?
純面向對象語言或完全面向對象語言是指完全面向對象的語言,它支持或具有將程序內的所有內容視為對象的功能。它不支持原始數據類型(如 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 等。我們可以在不調用其方法的情況下與對象使用算術運算符。
即使使用 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 及以后添加了新特性:自動裝箱和拆箱)。
“不積跬步,無以至千里”,希望未來的你能:有夢為馬 隨處可棲!加油,少年!
正是金九銀十跳槽季,為大家收集了 2019 年最新的面試資料,有文檔、有攻略、有視頻。
有需要的同學可以來在公眾號【Java 知己】,發送【面試】領取最新面試資料攻略!

