0
首先我設計了一個協議作爲我的基類,它不能被實例化。後來我發現在這個協議的類之間應該有一些共享方法,所以我想添加一些默認實現到協議。
AFAIK,Obj-C不支持默認行爲的協議,所以我必須使它成爲一個接口。然後想出了我的問題,如何使一個接口不能被實例化?iOS:如何使一個接口不能被實例化?
謝謝。
首先我設計了一個協議作爲我的基類,它不能被實例化。後來我發現在這個協議的類之間應該有一些共享方法,所以我想添加一些默認實現到協議。
AFAIK,Obj-C不支持默認行爲的協議,所以我必須使它成爲一個接口。然後想出了我的問題,如何使一個接口不能被實例化?iOS:如何使一個接口不能被實例化?
謝謝。
接口無法實例化,永遠。也許你正在考慮抽象類,這在Objective-C中並不真正可用。也許你應該重新考慮你的程序結構,並嘗試使用更多的繼承。如果您從繼承的類符合某個協議(這與Java接口的Objective-C相當),那麼您可以實例化該類,或者對其進行子類化,然後對其進行實例化。
看看這裏關於繼承的更多信息:http://www.techotopia.com/index.php/Objective-C_Inheritance
是的,我想在Java中類似的抽象類(未接口)。重構我的繼承,添加一個符合特定協議的基本接口,並且從這個基本接口擴展所有其他子類,實際上是一個解決方案。但是,我不明白'接口不能實例化,以往',他們可以實例化。我在這裏談論Obj-C術語。 – fifth
啊,是的,你可能是指Obejctive-C中的/ @接口語法吧?如果與作爲類標識符的Java相比較。命名是不同的,因爲您首先在頭文件中聲明接口,然後在實現文件中聲明/ @實現。基本上,你聲明一個類,就像你在C++中做的那樣,只有你將頭調用到接口上,因爲這就是大部分時候的事情;類實現必須實現的定義。 – RadicalRaid
當然,我的意思是Obejctive-C:D中的@interface語法。但我仍然想知道是否有可能使接口無法實例化。看起來答案是否定的。 – fifth