2012-04-29 50 views

回答

5

抽象類不是Objective-C中的語言功能(例如,與Java不同),所以它不是編譯器可以執行的東西。

當一個類被標記爲文檔中抽象的,它僅僅是一個暗示它是如何打算使用,但無論是運行時,也沒有編譯器實際上會阻止您直接將其實例化。

在Objective-C編程語言指南實際上指出NSView是一個抽象類,你可能有時沒有子使用的例子,所以這個概念本身是沒有那麼嚴格的其他語言/框架上abstract classes的部分。

1

感謝omz的回答。這是蘋果公司的文檔的相關摘錄:

抽象類

一些類只能或主要設計,使得從他們的其他類可以繼承 。這些抽象類將方法和實例 變量分組,這些變量可以被多個子類使用到共同的 定義中。抽象類本身通常是不完整的,但是 包含有用的代碼,它減少了其子類的實現負擔。 (因爲抽象類必須有子類是 有用的,他們有時也被稱爲抽象超)

其它語言不同,Objective-C中沒有語法標記 類作爲抽象的,也不會阻止你從創建一個抽象類的實例 。

NSObject類是 Cocoa中抽象類的規範示例。你永遠不會在 應用程序中使用NSObject類的實例 - 它對任何事都不會有好處;它將是一個通用的 對象,特別是無法做任何事情的對象。

另一方面,NSView類提供了一個抽象類 的示例,您可能會直接使用 的實例。

抽象類通常包含幫助定義應用程序結構的代碼。當您創建這些類的子類時,新類的實例 毫不費力地適用於應用程序結構 ,並自動與其他對象一起工作。