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

------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;
}
@end


int main()
{
    Score *s = [Score new];
    
    [s setCScore:90];
    [s setOcScore:100];
    
    [s setCScore:80];
    
    
    int a = [s totalScore];
    
    NSLog(@"总分:%d", a);
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值