【學習筆記】【OC語言】set方法和get方法
時間:2015-07-12 編輯:登山賞楓 來源:Cnblogs
1.set方法和get方法的使用場合
@public的成員可以被随意指派,應該使用set方法和get方法來管理成員的通路(類似機場的安檢、水龍頭過濾,過濾掉不合理的東西),比如僵屍的生命值不能為負數
2.set方法
作用:用來設定成員變量,可以在方法裡面過濾掉一些不合理的值
命名規範:
方法都是以set開頭,而且後面跟上成員變量名,成員變量名的首字母必須大寫
形參名稱不要跟成員變量同名
3.get方法
作用:傳回對象内部的成員變量
命名規範:get方法的名稱一般就跟成員變量同名
4.成員變量的命名規範
成員變量都以下劃線 _ 開頭
可以跟get方法的名稱區分開
可以跟其他局部變量區分開,一看到下劃線開頭的變量,肯定是成員變量
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
#import <Foundation/Foundation.h>
@interface Student : NSObject
{
// 成員變量盡量不要用@public
// @public
int age;
//@public
// 隻讀(readonly):隻允許外界通路我的no,不允許外界修改我的no
int no; // 隻需要提供get方法
}
//
/*
set方法
1.作用: 提供一個方法給外界設定成員變量值,可以在方法裡面對參數進行相應過濾
2.命名規範:
1> 方法名必須以set開頭
2> set後面跟上成員變量的名稱,成員變量的首字母必須大寫
3> 傳回值一定是void
4> 一定要接收一個參數,而且參數類型跟成員變量類型一緻
5> 形參的名稱不能跟成員變量名一樣
*/
- (void)setAge:(int)newAge;
/*
get方法
1.作用:傳回對象内部的成員變量
2.命名規範:
1> 肯定有傳回值,傳回值類型肯定與成員變量類型一緻
2> 方法名跟成員變量名一樣
3> 不需要接收任何參數
*/
- (int)age;
- (void)study;
@end
@implementation Student
// set方法的實作
- (void)setAge:(int)newAge
{
// 對傳進來的參數進行過濾
if (newAge <= 0)
{
newAge = 1;
}
age = newAge;
}
- (int)age
{
return age;
}
- (void)study
{
NSLog(@"%d歲的學生在學習", age);
}
@end
int main()
{
Student *stu = [Student new];
//stu->age = -10;
//stu->age = 10;
[stu setAge:10];
NSLog(@"學生的年齡是%d歲", [stu age]);
//[stu study];
return 0;
}