Я хотел бы знать, что такое @interface в объективе C? это именно там, где программист хочет объявить переменные, имена классов или имена методов...? Я не уверен, похоже ли это на интерфейс в Java. А также о @protocol в объекте C. Похоже, что интерфейс в Java больше. Может ли кто-нибудь дать мне подробное объяснение, пожалуйста. Я действительно ценю это.
@interface и @protocol объяснение?
Ответ 1
В интерфейсе вы определяете атрибуты и операции класса. Вы также должны указать реализацию.
Протокол похож на интерфейс для java.
например.
@protocol Printing
-(void) print;
@end
может быть реализовано
путем объявления (смутно в интерфейсе)
@interface Fraction: NSObject <Printing, NSCopying> {
//etc..
Непонятная вещь для разработчиков Java заключается в том, что фигурные скобки {}
не являются концом интерфейса, например.
@interface Forwarder : Object
{
id recipient;
} //This is not the end of the interface - just the operations
- (id) recipient;
- (id) setRecipient:(id) _recipient;
//these are attributes.
@end
//This is the end of the interface
Ответ 2
возможно, хорошо, если взглянуть на this + Я подумал, что это была большая помощь для понимания
Из статьи:
@interface
С++
foo.h
#ifndef __FOO_H__
#define __FOO_H__
class Foo
{
...
};
foo.cpp
#include "Foo.h"
...
Objective-C
foo.h
@interface Foo : NSObject
{
...
}
@end
Foo.m
#import "Foo.h"
@implementation Foo
...
@end
@protocol
С++
struct MyInterface
{
void foo() = 0;
}
class A : MyInterface
{
public:
void override foo() { ... }
}
Objective-C
@protocol MyInterface
-(void) foo;
@end
@interface Foo : NSObject <MyInterface>
{
-(void) foo {...}
...
}
@end
Ответ 3
@interface
в Objective-C не имеет ничего общего с интерфейсами Java. Он просто объявляет открытый интерфейс класса, его общедоступный API. (И переменные-члены, как вы уже заметили.) Интерфейсы в стиле Java называются протоколами в Objective-C и объявляются с помощью директивы @protocol
. Вы должны прочитать Apple Objective-C Язык программирования, это хорошая книга - короткая и очень доступная.