————————java培训、Andoroid培训、IOS培训、.Net培训、期待与您交流!————————
黑马学习笔记5——OC三大特性之封装
面向对象3大特性:封装、继承、多态
设计一个成绩类
*C语言成绩
*OC成绩
*总分(只读)
*平均分(只读)
封装
#import <Foundation/Foundation.h>
@interface Score : NSObject
{
/*
成员变量的命名规范:一定要以下划线_开头
作用:让成员变量和get方法的名称区分开
可以跟局部变量区分开
*/
int _cScore;//c语言成绩
int _ocScore;//OC成绩
int _totalScore;//总分
int _averageScore;//平均分
}
- (void)setCScore:(int)cScore;
- (void)setOCScore:(int)ocScore;
- (int)cScore;
- (int)ocScore;
- (int)totalScore;
- (int)averageScore;
@end
@implementation Score
- (void)setCScore:(int)cScore
{
_cScore=cScore;
_totalScore=_ocScore+_cScore;
_averageScore=_totalScore/2;
}
- (int)cScore
{
return _cScore;
}
- (void)setOCScore:(int)ocScore
{
_ocScore=ocScore;
_totalScore=_ocScore+_cScore;
_averageScore=_totalScore/2;
}
- (int)ocScore
{
return _ocSc ore;
}
- (int)totalScore
{
return _totalScore;
}
- (int)averageScore
{
return _averageScore;
}
@end
int main()
{
Score *s=[Score new];
[s setCScore:100];
[s setOCScore:80];
NSLog(@"总分=%d,平均分=%d",[s totalScore],[s averageScore]);
return 1;
}
get方法
1.作用:返回对象内部的成员变量
2.命名规范:有返回值,返回值内型肯定与成员变量类型一致
方法名跟成员变量名一样
不需要接收任何参数
set方法
1.作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行过滤
2.命名规范:方法名必须以set开头
set后面跟上成员变量名称,成员变量的首字母必须大写
返回值一定是void
一定要接受一个参数,而且参数类型跟成员变量一致
形参的名称不能跟成员变量名一样