OC的構造方法

2021-06-28 14:57:09 字數 3040 閱讀 7059

oc語言構造方法:

用來初始化物件的方法,物件方法,以減號開頭

為了讓物件建立出來,成員變數就會有一些固定的值

重寫構造方法的注意點:

先呼叫父類的構造方法([super init])

再進行子類內部成員變數的初始化

構造方法的呼叫:

完整的建立乙個可用的物件:person *p=[person new];

new方法的內部會分別呼叫兩個方法來完成2件事情,

1)使用alloc方法來分配儲存空間(返回分配的物件);

2)使用init方法來對物件進行初始化。

可以把new方法拆開如下:

1.呼叫類方法+alloc分配儲存空間,返回未經初始化的物件

person *p1=[person  alloc];

2.呼叫物件方法-init進行初始化,返回物件本身

person *p2=[p1 init];

3.以上兩個過程集成為一句:

person *p=[[person alloc] init];

說明:init方法就是構造方法,是用來初始化物件的方法,注意這是乙個物件方法,一減號開頭。預設初始化完畢後,所有成員變數的值都為0。

例如:person.h

#import @inte***ce person : nsobject

@property int age;

@end

person.m

#import "person.h"

@implementation person

// 重寫-init方法

//- (id)init

////

// // 3.返回乙個已經初始化完畢的物件

// return self;

//}- (id)init

// 3.返回乙個已經初始化完畢的物件

return self;

}@end

main.m

#import #import "person.h"

#import "student.h"

// 構造方法:用來初始化物件的方法,是個物件方法,-開頭

// 重寫構造方法的目的:為了讓物件建立出來,成員變數就會有一些固定的值

/* 重寫構造方法的注意點

1.先呼叫父類的構造方法([super init])

2.再進行子類內部成員變數的初始化

*/int main()

構造方法使用注意

(1)子類擁有的成員變數包括自己的成員變數以及從父類繼承而來的成員變數,在重寫構造方法的時候應該首先對從父類繼承而來的成員變數先進行初始化。

(2)原則:先初始化父類的,再初始化子類的。

(3)重寫構造方法的目的:為了讓物件方法一建立出來,成員變數就會有一些固定的值。

(4)注意點:

1、先呼叫父類的構造方法[super init]; 

2、再進行子類內部成員變數的初始化。

自定義構造方法:

自定義構造方法的規範:

(1)一定是物件方法,以減號開頭

(2)返回值一般是id型別

(3)方法名一般以initwith開頭

自定義構造方法例子:

person.h

#import @inte***ce person : nsobject

@property nsstring *name;

@property int age;

/* 自定義構造方法的規範

1.一定是物件方法,一定以 - 開頭

2.返回值一般是id型別

3.方法名一般以initwith開頭

*/- (id)initwithname:(nsstring *)name;

- (id)initwithage:(int)age;

// initwithname:andage:

- (id)initwithname:(nsstring *)name andage:(int)age;

@end

person.m

#import "person.h"

@implementation person

- (id)init

return self;

}- (id)initwithname:(nsstring *)name

return self;

}- (id)initwithage:(int)age

return self;

}- (id)initwithname:(nsstring *)name andage:(int)age

return self;

}@end

對應的main.m

#import #import "person.h"

#import "student.h"

int main(int argc, const char * argv)

return 0;

}

自定義構造方法的使用注意:

(1)自己做自己的事情

(2)父類的方法交給父類的方法來處理,子類的方法處理子類自己獨有的屬性

成員變數的作用域:

@public

在任何地方都能直接訪問物件的成員變數

@private

只能在當前類的物件方法中訪問

@protected(可以不寫,預設)

能在當前類和子類的物件方法中直接訪問

@package

只要處在同乙個框架中,就能直接訪問物件的成員變數

@inte***ce和@implementation中不能宣告同名的成員變數

在@implementation中宣告變數,預設是@private的

oc構造方法

一 構造方法的呼叫 完整的建立乙個可用的物件 person p person new new方法的內部會分別呼叫兩個方法來完成 2件事情,1 使用 alloc 方法來分配儲存空間 返回分配的物件 2 使用 init 方法來對物件進行初始化。可以把new 方法拆開如下 1.呼叫類方法 alloc 分配...

oc構造方法

主題 exam self 是訊息傳送者,不要簡單理解為物件 self super init if self return self 下圖為isa截圖 在物件處打一斷點可到如下內容,isa是指標,指向類方法 void setage等 在init構造實現賦值和輸出 需要有賦值方法和輸出方法 例如 set...

oc構造方法

在oc中init開頭的方法,我們稱之為構造方法 構造方法的用途 用於初始化乙個物件,讓某個物件一建立出來就擁有某些屬性和值 int main int argc,const char argv person.m day14 created by xiaomage on 15 6 23.import p...