爲何 Java 不是純面嚮對象語言?

什麼是純面嚮對象語言?

純面嚮對象語言或徹底面向對象語言是指徹底面向對象的語言,它支持或具備將程序內的全部內容視爲對象的功能。它不支持原始數據類型(如 int,char,float,bool 等)。編程語言知足七種標準能夠就能夠稱爲純粹的面嚮對象語言,他們是:java

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

爲何 Java 不是純面嚮對象語言?

Java 支持屬性 1,2,3,4 和 6 但不支持上面給出的屬性 5 和 7. Java 語言不是純面嚮對象語言,由於它包含如下屬性:面試

原始數據類型例如對象:編程

Smalltalk 是一種 「純粹的」 面向對象的編程語言,與 Java 和 C++ 不一樣,由於做爲對象的值和做爲基本類型的值之間沒有區別。在 Smalltalk 中,原始值,例如整數,布爾值和字符也是對象。在 Java 中,咱們將預約義類型做爲非對象(基本類型)。app

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

static 關鍵字:編程語言

當咱們將一個類聲明爲 Static 時,能夠在不使用 Java 中的對象的狀況下使用它。code

包裝類:視頻

包裝類提供了將基元轉換爲對象和對象轉換爲基元的機制。在 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 同樣工做:blog

  1. 在建立 Integer 類時,您使用的是基本類型 「int」,即數字 10,20。
  2. 在使用加法時,Java 使用原始類型 「int」( jdk1.5 須要拆箱操做,jdk1.5 及之後添加了新特性:自動裝箱和拆箱)。

「不積跬步,無以致千里」,但願將來的你能:有夢爲馬 隨處可棲!加油,少年!繼承

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

有須要的同窗能夠來在公衆號【Java 知己】,發送【面試】領取最新面試資料攻略!

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

相關文章
相關標籤/搜索