1
A
回答
6
報價:(通過e-SATIS很好Explantion)
接口
接口是一個合同:這傢伙寫的接口說:「嘿,我接受這種方式「,而使用界面的人說」好的,我寫的課程就是這樣看的「。
接口是一個空殼,只有方法的簽名(名稱/ params /返回類型)。這些方法不包含任何內容。界面不能做任何事情。這只是一種模式。
E.G(僞代碼):
// I say all motor vehicles should look like that :
interface MotorVehicle
{
void run();
int getFuel();
}
// my team mate complies and write vehicle looking that way
class Car implements MotoVehicle
{
int fuel;
void run()
{
print("Wrroooooooom");
}
int getFuel()
{
return this.fuel;
}
}
實現接口消耗很少的CPU,因爲它不是一個班,只是一堆名字,爲此並沒有昂貴的查詢做。這很重要,比如在嵌入式設備中。
抽象類
抽象類,不同的接口,是類。使用起來比較昂貴,因爲在從它們繼承時需要進行查找。
抽象類看起來很像接口,但它們有更多的東西:你可以爲它們定義一個行爲。這更多的是關於一個人說「這些班級應該看起來像這樣,他們有共同之處,所以填寫空白!」。
e.g:
// I say all motor vehicles should look like that :
abstract class MotorVehicle
{
int fuel;
// they ALL have fuel, so why let others implement that ?
// let's make it for everybody
int getFuel()
{
return this.fuel;
}
// that can be very different, force them to provide their
// implementation
abstract void run();
}
// my team mate complies and write vehicle looking that way
class Car extends MotorVehicule
{
void run()
{
print("Wrroooooooom");
}
}
1
在沒有多重繼承的語言,不同的是非常重要的。在php或Java術語中,一個類可能會實現多個接口,但只能從單個父類繼承,這可能是抽象的。
例如在C++中,區別變得不那麼重要。
相關問題
- 1. 公共抽象方法或接口?
- 2. 公共職能
- 3. 私人和公共職能
- 4. 公共職能不執行
- 5. jQuery插件公共職能
- 6. QTP,VBScript中,公共職能
- 7. 隱藏公共職能
- 8. Laravel 4公共職能
- 9. Javascript命名空間和公共職能
- 10. 接口和抽象
- 11. 抽象類或接口中的公共靜態最終字段
- 12. 接口和公共方法
- 13. keystonejs模式功能公共職能
- 14. 抽象類和公共代碼
- 15. 接口中的公共方法和抽象方法有什麼區別?
- 16. 查找未使用的公共職能
- 17. 公共職能之間的耦合
- 18. 無法運行JavaScript的公共職能
- 19. 方法名稱交換 - 公共抽象或抽象公開
- 20. 與接口和抽象類
- 21. PHP抽象類和接口
- 22. Java抽象和接口
- 23. C#接口和抽象類
- 24. Java抽象和接口
- 25. 抽象類和接口
- 26. PHP,OOP接口和抽象
- 27. 純抽象類和接口
- 28. 使用抽象和接口
- 29. 抽象接口
- 30. 據稱不存在公共職能?
Duplicates http://stackoverflow.com/questions/1221512/abstract-class-and-interface-class – 2010-03-03 12:38:59
另一個重複http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general- oo – 2010-03-03 12:40:04
對不起,這是一個**錯字**,我的意思是'抽象函數' – user198729 2010-03-03 12:42:42