@private:私有的,只有本类的对象方法中中可以直接访问访问它
成员变量在那个类中定义的才能在那个类中使用
@protected:受保护的:只能在本类和子类中可以直接访问,不再外部访问。(一般默认是protected)
@public:公共的,大家都可以用,在本类,子类,外部都可以访问
@package: 主要用在框架内部,在框架内部相当于@protected,在框架外部相当于@private,简单理解就是在本框架内可使用,外部不行。
翻译:打包,包装
成员变量在那个类中定义的才能在那个类中使用
@protected:受保护的:只能在本类和子类中可以直接访问,不再外部访问。(一般默认是protected)
@public:公共的,大家都可以用,在本类,子类,外部都可以访问
@package: 主要用在框架内部,在框架内部相当于@protected,在框架外部相当于@private,简单理解就是在本框架内可使用,外部不行。
翻译:打包,包装
控制可见性的修饰符,从使用开始直到所有成员变量结束或遇到其他的控制可见性修饰符为止
#import <Foundation/Foundation.h> //------main函数
#import "LSMan.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
LSMan *man = [[LSMan alloc] init];
// man->_age = 10;//不能使用
man->_height =150.2; //可以使用
// man->_name = @"tom"; 不能使用
}
return 0;
}
#import <Foundation/Foundation.h>//------LSPerson.h .m文件省略
@interface LSPerson : NSObject
{
//控制可见性的修饰符,从使用开始直到所有成员变量结束或遇到其他的控制可见性修饰符为止
@private //私有的,只有本类的对象方法中中可以直接访问访问它
int _age;
@protected //受保护的:只能在本类和子类中可以直接访问,不再外部访问
NSString *_name;
@public //公共的,大家都可以用,在本类,子类,外部都可以访问
double _height;
@package //主要用在框架内部,在框架内部相当于@protected,在框架外部相当于@private
double _weight;
}
@end
#import "LSPerson.h"//------LSMan.h 继承了LSPerson
@interface LSMan : LSPerson
{
// 父类中私有的成员变量,在子类中已经存在了,只是没有权限访问
// 在子类中不可以定义与父类同名变量,哪怕这个变量在父类中是私有
// int _age; 报错,父类中已经有这个变量了
}
- (void) test;
@end
#import "LSMan.h"//------LSMan.m
@implementation LSMan
- (void) test{
// _age = 10; 报错,私有的
// _name = @"tom"; 可以使用
// _sex = 0; 报错,父类实现定义,也属于私有
}
@end