<center>JAVA與C++的差異(2)</center>
JAVA的面向對象
類的所有方法,均為虛方法(虛函數(shù))
| 關鍵字 | 作用 |
|---|---|
instanceof |
檢查當前類是否屬于某個類的派生類,返回值BOOL類型 |
extends |
繼承關鍵字,聲明當前類繼承于什么基類 |
interface |
聲明接口類, 無需實現(xiàn)代碼,僅為聲明接口,表明此類至少有一個純虛方法,無法擁有非Static和Final之外的字段 ,接口方法默認為公有 |
implements |
基類為接口類, 實現(xiàn)基類的純虛方法 |
final |
相當于C++的Const
|
Abstraction |
抽象類, 無法被實例的類, 一個純虛基類, 派生類繼承,必須實現(xiàn)基類的方法或繼續(xù)聲明為抽象的方法 |
繼承同C++, 關鍵字變?yōu)?code>extends
不支持多重繼承,但是提供多重繼承功能, 可以實現(xiàn)多個基類的方法(即多重繼承)
方法重寫規(guī)則
即C++的派生類對基類的虛函數(shù)覆蓋
派生類中同名,同參,同返回值,基類中屬性為public或protect等可繼承的虛函數(shù)
? 重寫方法的參數(shù)列表應該與原方法完全相同。
? 返回值類型應該和原方法的返回值類型一樣或者是它在父類定義時的子類型。
? 重寫函數(shù)訪問級別限制不能比原函數(shù)高。舉個例子:如果父類方法聲明為公有的,那么子類中的重寫方法不能是私有的或是保護的。
? 只有被子類繼承時,方法才能被重寫。
? 方法定義為 final,將導致不能被重寫。
? 一個方法被定義為 static,將使其不能被重寫,但是可以重新聲明。
? 一個方法不能被繼承,那么也不能被重寫。
? 和父類在一個包中的子類能夠重寫任何沒有被聲明為 private 和 final 的父類方法。
? 和父類不在同一個包中的子類只能重寫 non-final 方法或被聲明為 public 或 protected 的方法。
? 一個重寫方法能夠拋出任何運行時異常,不管被重寫方法是否拋出異常。然而重寫方法不應該拋出比被重寫方法聲明的更新更廣泛的已檢查異常。重寫方法能夠拋出比被重寫方法更窄或更少的異常。
由于JAVA 無法使用C++的
::作用域符, 所以提供了一個super的關鍵字,以供派生類調(diào)用基類的方法
多態(tài)
多態(tài)同C++, 派生類指針轉基類指針調(diào)用虛函數(shù), 由于JAVA沒有指針,則為引用賦值
接口
(類無法多重繼承)接口類可繼承多個接口:
public interface Hockey extends Sports, Event
JAVA包
JAVA包名同C++命名空間的作用
包名一般為小寫,避免與類的方法重名
包的導入用 import關鍵字
- 可以使用 import 關鍵字和通配符(*)來導入。例如:
import packName.*;
- 可以使用 import 關鍵字來導入類本身。例如:
import packName.ClassName;
注: 一個類的文件可以包含任意數(shù)量的導入語句。這些導入語句必須位于包聲明語句之后和類的定義語句之前。