Saya memiliki 2 kelas satu termasuk methodA dan yang lainnya termasuk methodB. Jadi di kelas baru saya perlu mengganti metode methodA dan methodB. Jadi bagaimana cara mencapai multiple inheritance dalam tujuan C? Saya agak bingung dengan sintaksnya.
88
ClassA
danClassB
? Apakah menyerukanmethodA:
padaMyClass
entah bagaimana panggilan secara otomatismethodA:
padaClassA
?Ini adalah bagaimana saya mengkodekan singletonPattern sebagai "orang tua" Pada dasarnya saya menggunakan kombinasi protokol dan kategori.
Satu-satunya hal yang tidak dapat saya tambahkan adalah "ivar" baru. Namun, saya dapat mendorongnya dengan objek terkait.
#import <Foundation/Foundation.h> @protocol BGSuperSingleton +(id) singleton1; +(instancetype)singleton; @end @interface NSObject (singleton) <BGSuperSingleton> @end static NSMutableDictionary * allTheSingletons; +(instancetype)singleton { return [self singleton1]; } +(id) singleton1 { NSString* className = NSStringFromClass([self class]); if (!allTheSingletons) { allTheSingletons = NSMutableDictionary.dictionary; } id result = allTheSingletons[className]; //PO(result); if (result==nil) { result = [[[self class] alloc]init]; allTheSingletons[className]=result; [result additionalInitialization]; } return result; } -(void) additionalInitialization { }
Setiap kali saya ingin kelas untuk "mewarisi" BGSuperSingleton ini, saya hanya melakukan:
#import "NSObject+singleton.h"
dan tambahkan
@interface MyNewClass () <BGSuperSingleton>
sumber
Apakah Anda tahu tentang Protokol, protokol adalah cara untuk mengimplementasikan multiple inheritance
sumber
JAVA
,Interfaces
tidak untuk memberikan atau meniru beberapa warisan.