黑马程度员——OC语言—— @public和 @private 及 @protected

来源:互联网 发布:阿里云投诉电话 编辑:程序博客网 时间:2024/06/02 23:45

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

一,概念

  在C语言中,我们学习的局部变量,它们有自己的作用域。那OC中的成员变量也有它的的作用域。


二,主要分为下面三种情况

  @public:任何地方都可以直接访问

  @private:只能在当前类的对象方法中直接访问

  @protected:可以在父以及子类的对象方法中直接访问

三,小练习

#import <Foundation/Foundation.h>@interface Person : NSObject{    int _no;    @public // 在任何地方都能直接访问对象的成员变量    int _age;    @private  // 只能在当前类的对象方法中直接访问    int _height;    @protected // 能在当前类和子类的对象方法中直接访问    int _weight;    int _money;}- (void)setHeight:(int)height;- (int)height;- (void)test;@end@implementation Person{    int _aaa;// 默认就是私有    @public    int _bbb;    // @implementation中不能定义和@interface中同名的成员变量    // int _no;}- (void)test{    _age = 19;        _height = 20;        _weight = 50;        _aaa = 10;}- (void)setHeight:(int)height{    _height = height;}- (int)height{    return _height;}@end@interface Student : Person- (void)study;@end@implementation Student- (void)study{    // _height = 10;    [self setHeight:10];        int h = [self height];        _weight = 100;}@end@implementation Car : NSObject{@public    int _speed;    @protected    int _wheels;}- (void)setSpeed:(int)speed{    _speed = speed;}- (int)speed{    return _speed;}@endint main(){        Student *stu = [Student new];            [stu setHeight:100];            NSLog(@"%d", [stu height]);                /*         Car *c = [Car new];         c->_speed = 250;         */        //c.speed = 10;                // NSLog(@"%d", c.speed);                //[c setSpeed:<#(int)#>];                /*         Person *p = [Person new];         p->_bbb = 10;         p->_age = 100;         */        //p->_height = 20;            //p->_weight = 10;     return 0;}











0 0
原创粉丝点击