Tengo 2 clases, una incluye el método A y la otra incluye el método B. Entonces, en una nueva clase, necesito anular los métodos methodA y methodB. Entonces, ¿cómo puedo lograr una herencia múltiple en el objetivo C? Estoy un poco confundido con la sintaxis.
88
ClassA
yClassB
? Hace llamarmethodA:
enMyClass
alguna manera llamar automáticamentemethodA:
enClassA
?Así es como codifico singletonPattern como "padre" Básicamente utilicé una combinación de protocolo y categoría.
Lo único que no puedo agregar es un nuevo "ivar", sin embargo, puedo presionarlo con el objeto asociado.
#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 { }
Siempre que quiero que una clase "herede" este BGSuperSingleton, simplemente hago:
#import "NSObject+singleton.h"
y añadir
@interface MyNewClass () <BGSuperSingleton>
fuente
¿Sabes de Protocolos, protocolos es la forma de implementar la herencia múltiple?
fuente
JAVA
,Interfaces
no deben proporcionar ni imitar herencia múltiple.