黑马程序员——Object-C基础(五)面向对象的特性:封装

来源:互联网 发布:js div滚动条触发事件 编辑:程序博客网 时间:2024/04/28 23:10

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

封装、继承与多态是面向对象编程中的三大重要特性

1.         set方法和get方法的使用场合

@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西)。

2.         set方法

1)      作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值

2)      命名规范:

3)    方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写

4)    形参名称不要跟成员变量同名

3.         get方法

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

2)      命名规范:get方法的名称一般就跟成员变量同名

4.         成员变量的命名规范

1)   成员变量都以下划线 _ 开头

2)   可以跟get方法的名称区分开

3)   可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量

5.         代码示例

#import <Foundation/Foundation.h>// 声明@interface Car: NSObject{    int _wheels; //轮子个数}/*set方法*/- (void)setWheels:(int)wheels;/*get方法*/- (int)wheels;@end @implementation Car//set方法的实现- (void)setWheels:(int)wheels{    // 对外面传进来的轮子数进行过滤    if (wheels<=0)    {        wheels = 1;    }       _wheels = wheels;} //get方法的实现- (int)wheels{    return _wheels;}@end

6.         封装的好处

  • 过滤不合理的值
  • 屏蔽内部的赋值过程
  • 让外界不必关注内部的细节

7.         封装练习代码:

/* 4.设计一个成绩类 * C语言成绩(可读可写) * OC成绩(可读可写) * 总分(只读) * 平均分(只读)*/#import <Foundation/Foundation.h>@interface Score : NSObject{    int _cScore; // C语言成绩    int _ocScore; // OC成绩        int _totalScore;// 总分    int _averageScoe; // 平均分}- (void)setCScore:(int)cScore;- (int)cScore;- (void)setOcScore:(int)ocScore;- (int)ocScore;- (int)totalScore;- (int)averageScore;@end@implementation Score- (void)setCScore:(int)cScore{    _cScore = cScore;        // 计算总分    _totalScore = _cScore + _ocScore;    _averageScoe = _totalScore/2;}- (int)cScore{    return _cScore;}- (void)setOcScore:(int)ocScore{    _ocScore = ocScore;        // 计算总分    _totalScore = _cScore + _ocScore;    _averageScoe = _totalScore/2;}// 监听成员变量的改变- (int)ocScore{    return _ocScore;}- (int)totalScore{    return _totalScore;}- (int)averageScore{    return _averageScoe;}@endint main(){    Score *s = [Score new];        [s setCScore:90];    [s setOcScore:100];        [s setCScore:80];            int a = [s totalScore];        NSLog(@"总分:%d", a);        return 0;}

0 0
原创粉丝点击