NoteOc 05 屬性建構函式

2021-07-08 10:55:44 字數 3967 閱讀 3360

//main函式

//// main.m

// noteoc-05-屬性建構函式

//// created by 劉佳斌 on 15/11/23.

///*

屬性:某種事物的特徵

setter:設定者

- (void)setname:(nsstring *)name;

getter:獲取者

-(nsstring *)name;

setter:公式:

-(void)set屬性名:(屬性型別)形參名;

getter:公式

-(屬性型別)屬性名;

點語法(.)又叫屬性,可以通過 . 給屬性賦值 取值

屬性公式:

在.h檔案中 @property 屬性的型別 屬性名

以前的時候 需要在.m檔案中寫上@synthesize

@property 表示宣告屬性方法

@synthesize 表示實現屬性方法

現在@synthesize既包含宣告,也包含實現

構造方法:又叫init方法,用來建立乙個物件

自定義構造方法:

1.公式:

-(id)initwith要初始的變數名:(資料型別)形參名

return self;

} 2.本質:就是乙個有引數有返回值的方法,但是自定義建構函式有特殊意思,表示是建立乙個物件的方法

標示它有特殊意義的符號

(1)方法名 必須用initwith作為方法的開頭,並且w大寫

(2)方法實現的公式

self = [super init];

if (self)

return self;

注意:1.initwith的w必須大寫

2.自定義構造方法要在.h中宣告

?為什麼要使用屬性 自定義構造方法

目的都是為了傳值

只要是正向傳值,屬性隨時都可以使用

自定義構造方法也是正向傳值,但只能在初始化的時候使用

***** 變數名不能重名 方法名也不能重名

*/#import #import "hero.h"

#import "hua.h"

int main(int argc, const char * argv) ,@,@];

nsmutablearray *flowers = [nsmutablearray array];

for (nsdictionary *info in flowerdatas)

nsarray *changeprice = @[@15,@5000,@300];

for (int i=0;i@"情人節%@ 賣%d",flower.name,flower.price);

}*/ nsarray *huadatas = @[@,@,@];

nsmutablearray *huas = [nsmutablearray alloc];

for (nsdictionary *info in huadatas)

}return

0;}

//hua類

//.h檔案

//// hua.h

// noteoc-05-屬性建構函式

//// created by 劉佳斌 on 15/11/23.

//#import

@inte***ce

hua : nsobject

@property

nsstring *name;

@property

nsstring *color;

@property

int price;

@property

nsstring *smell;

- (instancetype)initwithname:(nsstring *)name andcolor:(nsstring *)color andprice:(int)price andsmell:(nsstring *)smell;

@end

//.m檔案

//// hua.m

// noteoc-05-屬性建構函式

//// created by 劉佳斌 on 15/11/23.

//#import "hua.h"

@implementation

hua- (instancetype)initwithname:(nsstring *)name andcolor:(nsstring *)color andprice:(int)price andsmell:(nsstring *)smell

return

self;

}@end

//hero類

//.h檔案

//// hero.h

// noteoc-05-屬性建構函式

//// created by 劉佳斌 on 15/11/23.

//#import

@inte***ce

hero : nsobject

/*// 名字 攻擊力 血量 防禦力

-(void)setname:(nsstring *)name;

-(nsstring *)name;

-(void)setpower:(int)power;

-(int)power;

-(void)setblood:(int)blood;

-(int)blood;

-(void)setdef:(int)def;

-(int)def;

*/@property

nsstring *name; //等同於上邊set get方法

@property

int power;

@property

int blood;

@property

int def;

- (instancetype)initwithpower:(int)power;

- (instancetype)initwithname:(nsstring *)name andpower:(int)power andblood:(int)blood anddef:(int)def;

@end

//.m檔案

//// hero.m

// noteoc-05-屬性建構函式

//// created by 劉佳斌 on 15/11/23.

//#import "hero.h"

@implementation

hero

//系統的構造方法

/* 1.self是自己的意思 用來替代初始化出來的物件

2.super是超級的意思 表示父類

3.id 表示乙個泛型 只要是object型別都可以用id替代

instancetype與id等價 但instancetype只限於建構函式

*/-(id)init

return

self;

}- (instancetype)initwithpower:(int)power

return

self;

}- (instancetype)initwithname:(nsstring *)name andpower:(int)power andblood:(int)blood anddef:(int)def

return

self;}/*

-(void)setname:(nsstring *)name

-(nsstring *)name

-(void)setpower:(int)power

-(int)power

-(void)setblood:(int)blood

-(int)blood

-(void)setdef:(int)def

-(int)def

*/@end

C 字段屬性and建構函式

欄位和屬性 1 通常字段修飾符為private,屬性修飾符為public.2 字段 a.欄位又稱為 成員變數 一般在類的內部做資料互動使用。b.欄位命名規範 camel命名法 首單詞字母小寫 舉個例子 在建築中,你的房子裡面的東西一般都是私有的,屬於你個人的。所有欄位的修飾符是private修飾。3...

C 基礎 屬性 建構函式 靜態建構函式 析構函式

一 屬性 屬性是度字段的擴充套件,根據物件導向的基本思想,字段最好設定為private,因為這樣可以防止客戶端直接對欄位進行修改,從而保證內部成員的完整性。通過屬性來訪問字段,避免了呼叫方法。當屬性僅含有get訪問器或set訪問器為private級別時,這樣是屬性就是制度實行,反之就是只寫屬性。屬性...

C 的引用 屬性 建構函式

引用 c 的引用類似於c語言的指標。如 class person person p1,p2 此表示式執行後,系統只是分配了兩個位址來存放這兩個類變數名,並沒有分配長度為int string大小的空間 p1 new person p1.age 10 此兩式執行後系統分配了記憶體用以儲存p1.age和p...