在OOP中,自C++面世以來就已變得非常矚目的一個問題就是,是否所有的類最終都繼承自單一的基類。在Java中(事實上還包括除C++以外的所有OOP語言),答案是yes,這個終極基類的名字就是Object。事實證明,單根繼承結構帶來了很多好處。
在單根繼承結構中的所有對象都具有一個共用接口,所以它們歸根到底都是相同的基本類型。另一種(C++所提供的)結構是無法確保所有對象都屬於同一個基本類型。從向後兼容的角度看,這么做能夠更好地適應C模型,而且受限較少,但是當要進行完全的面向對象程式設計時,則必須構建自己的繼承體系,使得它可以提供其他OOP語言內置的便利。並且在所獲得的任何新類庫中,總會用到一些不兼容的接口,需要花力氣(有可能要通過多重繼承)來使新接口融入你的設計之中。這么做來換取C++額外的靈活性是否值得呢?如果需要的話—如果在C上面投資巨大,這么做就很有價值。如果是剛剛從頭開始,那么像Java這樣的選擇通常會有更高的生產率。
單根繼承結構保證所有對象都具備某些功能。因此你知道,在你的系統中你可以在每個對象上執行某些基本操作。所有對象都可以很容易地在堆上創建,而參數傳遞也得到了極大的簡化。
單根繼承結構使垃圾回收器的實現變得容易得多,而垃圾回收器正是Java相對C++的重要改進之一。由於所有對象都保證具有其類型信息,因此不會因無法確定對象的類型而陷入僵局。這對於系統級操作(如異常處理)顯得尤其重要,並且給編程帶來了更大的靈活性。