Objective - C基础: 第二天 - 1.封装思想初认识之set和get方法

来源:互联网 发布:淘宝限时抢购在哪里 编辑:程序博客网 时间:2024/06/10 02:55

前言

在第一天里面, 我们知道了类, 对象, 方法, 还有一些基础知识, 到了第二天, 我们继续往下来慢慢学习, 只有耐心的学习, 才能学的好, 否则就像没有基座的塔一样, 倒了~


开始

在之前的例子里, 我们都知道怎么声明成员变量, 但如果要去访问成员变量的话, 就必须得写一个@public才能访问, 否则编译器会报错, 那么为什么会这样子呢? 下面让我们来慢慢解释:


在OC中, 在.m文件里声明的成员变量都是属于私有的, 也就是受保护的, 如果没有写@public, 那么就只有通过特殊的手段才能访问, 那么如何访问呢? 下面让我们来看看例子:

#import <Foundation/Foundation.h>@interface Preson : NSObject{    int age;}- (void)test;@end@implementation Preson- (void)test{    NSL(@"一个%d岁的人在走路.", age);}@endint main(){    Preson *p = [Preson new];    p->age = 20;        [p test];        return 0;}

这里我没有写@public, 所以输出的结果是:

1.封装思想.m:13:5: warning: implicit declaration of function 'NSL' is invalid in C99      [-Wimplicit-function-declaration]    NSL(@"一个%d岁的人在走路.", age);    ^1.封装思想.m:20:8: error: instance variable 'age' is protected    p->age = 20;       ^1 warning and 1 error generated.


编译器会报错, 说age这个成员变量被保护, 无法访问, 但我们之前也知道了, 不能在声明成员变量的时候给它赋值, 那么我们该怎么做呢?? 让我们继续往下看~~



在OC中, 有一种专门的方法来解决存取成员变量的方法, 它们就是Set方法和Get方法, 什么是Set方法? 什么是Get方法? 下面让我们一起来看看:

Set方法:

#import <Foundation/Foundation.h>@interface Preson : NSObject{    int age;}- (void)test;- (void)setAge:(int)newAge;@end@implementation Preson- (void)test{    NSLog(@"一个%d岁的人在走路.", age);}- (void)setAge:(int)newAge{    age = newAge;}@endint main(){    Preson *p = [Preson new];        [p setAge:20];    [p test];            return 0;}


这样子我们就可以把我们想要的值存入进去啦, 但还有一个问题, 我把值存进去了, 那如果我想取出来呢?? 这又要怎么取? 继续往下看:

Get方法:

#import <Foundation/Foundation.h>@interface Preson : NSObject{    int age;}- (void)test;- (void)setAge:(int)newAge;- (int)age;@end@implementation Preson- (void)test{    NSLog(@"一个%d岁的人在走路.", age);}- (void)setAge:(int)newAge{    age = newAge;}- (int)age{    return age;}@endint main(){    Preson *p = [Preson new];        [p setAge:20];    [p test];        NSLog(@"一个%d岁的人在走路.", [p age]);        return 0;}

通过上面这个Get方法, 我们就可以取到我们存进去的值了~~~其实这个Set方法和Get方法是一种间接式的存取方法, 非常好用~~下面是它们的解释以及注意的事项:

Set方法

1.作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤

2.命名规范:

1>方法名必须以set开头

2> set后面跟上成员变量的名称,成员变量的首字母必须大写

3>返回值一定是void

4>一定要接收一个参数,而且参数类型跟成员变量类型一致

5>形参的名称不能跟成员变量名一样


Get方法

1.作用:返回对象内部的成员变量

2.命名规范:

1>肯定有返回值,返回值类型肯定与成员变量类型一致

2>方法名跟成员变量名一样

3>不需要接收任何参数


0 0
原创粉丝点击