2

私は次のクラスを持っています:

Teacher
Student
Class (like a school class)

それらはすべて、次のコードを持つ KObject から拡張されています。

- initWithKey
- send
- processKey

Teacher、Student クラスはすべて、KObject 親クラスの関数 processKey と initWithKey を使用します。独自のバージョンの send を実装しています。私が抱えている問題は、KObject をインスタンス化してはならないということです。これは抽象クラスに似ていますが、objective-c には抽象クラスの概念はありません。サブクラスが 1 つのプロパティと 2 つの関数にアクセスできるようにする場合にのみ役立ちます。

KObject をインスタンス化できなくても、サブクラスが KObject の関数とプロパティにアクセスできるようにするにはどうすればよいですか?

4

3 に答える 3

0

ハッキーな解決策:

- (id)init {   if ([self class] == [FastEnumerable class]) {
    @throw [NSException exceptionWithName:NSInternalInconsistencyException
      reason:@"Error, attempting to instantiate KObject abstract class directly." userInfo:nil];   }

  self = [super init];   if (self) {
    // Initialization code here.   }

  return self; }

そして、抽象メソッドとして「送信」するプロトコルを使用する方が良いです...

于 2013-10-20T01:47:51.423 に答える