OC-010.OC类中的修饰可见性的关键字@private、@protected、@public

@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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值