Object_C 回顾 0.0.2

1.类中实例变量的可见度

  实例变量可见度

    @public公共的,在类的内部外部都可以进行实例变量的访问(破坏了封装特性)

    @private私有的 ,只有在当前的类的内部才能够直接访问,在类的外部及其子类都不可以进行访问(破坏了继承特性)

    @protected 受保护的,只有当前类及其子类才能进行访问(默认可见度)

比如:

@interface Person : NSObject

{

    @public

    NSString *_name;

    NSString *_sex;

    

    @private

    unsignedint  _age;

    CGFloat _weight;


    @protected

    NSString *_hobby;

}

2.类的初始化:

-(id)init;

自定义初始化方法(指定初始化方法)

 指定初始化方法: init开头 + With + 参数描述 : +各个参数 以及参数类型

指定初始化方法 : 不管执行哪一个初始化方法,一定会执行的初始化方法称之为指定初始化方法

-(id)initWithName:(NSString *)name

              sex:(NSString *)sex

              age:(unsignedint)age

           weight:(CGFloat)weight

            hobby:(NSString *)hobby;

-(id)initWithName:(NSString *)name

             sex :(NSString *)sex

              age:(unsignedint)age;

-(id)initWithName:(NSString *)name

            hobby:(NSString *)hobby;

3.方法的书写形式

1.  + / - 标识作用"-"代表实例方法"+"代表类方法

2. 返回值类型需要使用"()"

3. 参数描述+":" + 参数以及参数类型

4. 方法名 :去掉+  - ,去掉返回值类型 去掉参数类型以及参数,剩余的就是方法名下面的方法名是(setName:sex:age:weight:hobby);

- (void)setName:(NSString *)name sex:(NSString *)sex age:(unsignedint)age weight:(CGFloat) weight hobby:(NSString *)hobby;

因为我们不清楚 用户到底需要那几个实例变量赋值索性为每一个实例变量设置一个赋值方法(setter方法)

setter 方法的书写形式

-(void) + set开头 +对应实例变量 去掉"_"首字母大写 + ":"参数类型及参数 (例如namesetter -(void)setName:(NSString)name)

-(void)setName:(NSString *)name;

-(void)setSex:(NSString *)sex;

-(void)setAge:(unsignedint)age;

-(void)setWeight:(CGFloat)weight;

-(void)setHobby:(NSString *)hobby;

getter 方法的书写形式

-(对应实例变量的数据类型) +对应实例变量去掉 "_" (例如namegetter方法 -(NSString *)name;)

-(NSString *)name;

-(NSString *)sex;

-(unsignedint )age;

-(CGFloat)weight;

-(NSString *)hobby;


实现

@implementation Person


//初始化方法

-(id)init

{

    _name =@"小明";

    _sex =@"";

    _hobby =@"打篮球";

    _age =20;

    _weight =50.0;

    

    returnself;

}


-(id)initWithName:(NSString *)name

              sex:(NSString *)sex

              age:(unsignedint)age

           weight:(CGFloat)weight

            hobby:(NSString *)hobby

{

    self = [superinit];

    if (self) {

        _name =name;

        _age = age;

        _sex = sex;

        _weight = weight;

        _hobby = hobby;

    }

    

    returnself;

}


//

-(id)initWithName:(NSString *)name

             sex :(NSString *)sex

              age:(unsignedint)age

{

    

    return [selfinitWithName:name sex:sexage:age weight:0hobby:nil];

}


//


-(id)initWithName:(NSString *)name

            hobby:(NSString *)hobby

{

    return [selfinitWithName:name sex:nilage:0weight:0hobby:hobby];

}





- (void)setName:(NSString *)name sex:(NSString *)sex age:(unsignedint)age weight:(CGFloat) weight hobby:(NSString *)hobby

{

    _name = name;

    _sex = sex;

    _age = age;

    _weight  = weight;

    _hobby = hobby;

}


-(void)setWeight:(CGFloat)weight hobby:(NSString *)hobby

{

    _weight = weight;

    _hobby = hobby;

}



-(void)setName:(NSString *)name

{

    _name = name;

}

-(void)setSex:(NSString *)sex

{

    _sex = sex;

    

}

-(void)setAge:(unsignedint)age

{

    _age = age;

}

-(void)setWeight:(CGFloat)weight

{

    _weight = weight;

}

-(void)setHobby:(NSString *)hobby

{

    _hobby = hobby;

}


-(NSString *)name

{

    return_name;

}

-(NSString *)sex

{

    return_sex;

}

-(unsignedint )age

{

    return_age;

}

-(CGFloat)weight

{

    return_weight;

}

-(NSString *)hobby

{

    return_hobby;

}


调用:

 //创建Person对象

        Person *p1 = [[Personalloc] init];

        

        [p1 sayHi];

        //操作实例变量

        p1->_name =@"小刚";

[p1 setName:@"小刚"sex:@""age:23weight:60.5hobby:@"吃喝"];

   //setter方法操作实例变量

        [p1 setName:@"小刚"];

        [p1 setSex:@""];

        [p1 setAge:24];

        [p1 setWeight:56.0];

        [p1 setHobby:@""];

        NSLog(@"姓名%@性别%@ 爱好%@",[p1name],[p1 sex],[p1hobby]);

        //点语法既可以调用setter 又可以调用getter可以通过=位置作为判断        

        p1.name =@"小亮";

        p1.weight =54.0;//等价于 [p1 setWeight:100]

        NSLog(@"体重 %.2f",p1.weight);//==[p1 weight];




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值