程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java的單根結構

Java的單根結構

編輯:關於JAVA

在面向對象的程序設計中,由於C++的引入而顯得尤為突出的一個問題是:所有類最終是否都應從單獨一個基礎類繼承。在Java中(與其他幾乎所有OOP語言一樣),對這個問題的答案都是肯定的,而且這個終級基礎類的名字很簡單,就是一個“Object”。這種“單根結構”具有許多方面的優點。
單根結構中的所有對象都有一個通用接口,所以它們最終都屬於相同的類型。另一種方案(就象C++那樣)是我們不能保證所有東西都屬於相同的基本類型。從向後兼容的角度看,這一方案可與C模型更好地配合,而且可以認為它的限制更少一些。但假期我們想進行純粹的面向對象編程,那麼必須構建自己的結構,以期獲得與內建到其他OOP語言裡的同樣的便利。需添加我們要用到的各種新類庫,還要使用另一些不兼容的接口。理所當然地,這也需要付出額外的精力使新接口與自己的設計方案配合(可能還需要多重繼承)。為得到C++額外的“靈活性”,付出這樣的代價值得嗎?當然,如果真的需要——如果早已是C專家,如果對C有難捨的情結——那麼就真的很值得。但假如你是一名新手,首次接觸這類設計,象Java那樣的替換方案也許會更省事一些。
單根結構中的所有對象(比如所有Java對象)都可以保證擁有一些特定的功能。在自己的系統中,我們知道對每個對象都能進行一些基本操作。一個單根結構,加上所有對象都在內存堆中創建,可以極大簡化參數的傳遞(這在C++裡是一個復雜的概念)。
利用單根結構,我們可以更方便地實現一個垃圾收集器。與此有關的必要支持可安裝於基礎類中,而垃圾收集器可將適當的消息發給系統內的任何對象。如果沒有這種單根結構,而且系統通過一個句柄來操縱對象,那麼實現垃圾收集器的途徑會有很大的不同,而且會面臨許多障礙。
由於運行期的類型信息肯定存在於所有對象中,所以永遠不會遇到判斷不出一個對象的類型的情況。這對系統級的操作來說顯得特別重要,比如違例控制;而且也能在程序設計時獲得更大的靈活性。
但大家也可能產生疑問,既然你把好處說得這麼天花亂墜,為什麼C++沒有采用單根結構呢?事實上,這是早期在效率與控制上權衡的一種結果。單根結構會帶來程序設計上的一些限制。而且更重要的是,它加大了新程序與原有C代碼兼容的難度。盡管這些限制僅在特定的場合會真的造成問題,但為了獲得最大的靈活程度,C++最終決定放棄采用單根結構這一做法。而Java不存在上述的問題,它是全新設計的一種語言,不必與現有的語言保持所謂的“向後兼容”。所以很自然地,與其他大多數面向對象的程序設計語言一樣,單根結構在Java的設計方案中很快就落實下來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved