重繼承、介面和異常處理 (轉)
重繼承、介面和異常處理
2000-12-23· Adding翻譯·yesky
--------------------------------------------------------------------------------
多重繼承和介面
一些面向語言允許一個類從多個基類中繼承,而另一些面嚮物件語言只允許從一個類繼承,但可以隨意從幾個介面或純抽象類中繼承。一個純抽象類是隻含有純虛的類。
只有C++支援多個介面,許多員對此褒貶不一。由多個介面引發的虛基類的概念雖然不易讓人掌握,但它的功能是強大的。C++沒有介面概念。
和 Pascal一樣,雖沒有多重繼承,但卻全面支援多個介面。介面的方法支援多型性,當需要一個介面物件時,就可以透過物件實現一個介面。一個類可以繼承或擴充套件一個已有多個介面的基類。例如:
public interface CanFly {
public void Fly();
}
public class Bat extends Animal implements CanFly {
public void Fly( ) { // the bat flies... }
}
引入Object Pascal的Dephi 3 有與Java介面相似的概念,但這些概念和COM對映得非常好。Dephi 3的介面是和類的繼承分開的,而Java的類不僅可以從基類繼承,而且可以有多個介面。
一個強壯型別的面嚮物件語言編譯時必然需要全部的型別檢查,但有時還必需在執行程式時保留一些型別和類的資訊。基於這種考慮,Java 、C++和Object Pascal都支援在更高或較小範圍內的ntification或Information執行型別檢查。RTTI用於Identification和Information兩者的執行型別檢查。
C++一開始是不支援RTTI的,後來加上dynamic_cast用來得到一些類的型別資訊。
Object Pascal和它的視覺化環境支援許多RTTI。它不僅支援型別檢查和is或as操作,而且為每個published元素產生更廣泛的RTTI。實際上,published這個關鍵字影響產生的RTTI資訊。所有屬性的概念、流機制、環境以及物件檢測的開始,在很在程度上取決於RTTI。TObject有ClassName和ClassType方法,ClassType返回類的型別變數,一個特殊指定類的例項。
同Object Pascal相同,Java也有一個基類來保持對類資訊的跟蹤。Object的getClass()用來返回一種型別的元類(用來描述類的物件),getName()函式返回類的字串名。也可使用instanceof來關注視覺化環境和的程式。
下面的例子來說明上述三種語言的不同:
// C++
Dog* MyDog = dynamic_cast
// Java
Dog MyDog = (Dog) myAnimal;
// Object Pascal
Dog myDog := myAnimal as Dog;
異常處
異常處理的基本思想是簡化程式的錯誤程式碼,為程式鍵壯性提供一個標準檢測機制。由於異常內容太多,故這裡僅討論主要的元素和差別。
C++使用throw關鍵字來產生異常,try關鍵字用來檢測的程式塊,catch關鍵字用來填寫異常處理的程式碼。異常可以由一個確定類或派生類的物件產生。C++能釋放堆疊,並可清除堆疊中所有的物件。
Object Pascal使用和C++相似的關鍵字raise、try和except,並有相同的,但卻不能釋放堆疊,這是因為堆疊中沒有物件。當然,也可選擇finally關鍵字來讓程式程式碼一直,而忽視異常的產生。Delphi異常類是從Exception派生的。
Java使用C++一樣的關鍵字,但它的一些行為和Object Pascal是一致的,包括finally關鍵字。這一點可能是因為Java使用物件引用模型和後臺垃圾回收機制的緣故吧。Java物件的類必須從Throwable類派生。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988178/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 異常處理 (轉)
- 重學Java - 異常處理Java
- 異常處理方法 (轉)
- 【轉】Oracle 異常處理Oracle
- 重寫Laravel異常處理類Laravel
- 繼承與介面 (轉)繼承
- Java繼承和介面Java繼承
- c++異常處理 (轉)C++
- PHP錯誤處理和異常處理PHP
- 約束和異常處理
- 迭代器和異常處理
- 異常篇——異常處理
- MySQL定義異常和異常處理詳解MySql
- PL/SQL異常處理初步(轉)SQL
- 異常處理
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- Java 異常處理:使用和思考Java
- Java異常處理和設計Java
- MySQL遊標和異常處理MySql
- 繼承 重寫和抽象類繼承抽象
- Python錯誤處理和異常處理(二)Python
- PostgreSQL異常重啟postmaster.pid處理SQLAST
- [轉載] Java異常處理習題Java
- (轉)pl/sql開發異常處理SQL
- Struts的異常處理機制 (轉)
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- Java 異常處理Java
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理
- oracle異常處理Oracle
- PowerShell 異常處理
- plsql異常處理SQL