06 例項方法和類方法

2021-06-21 04:03:19 字數 1902 閱讀 4206

1. 例項方法(instance method)和類方法(class method)

只能通過物件例項呼叫的方法叫例項方法,例項方法都是以"-"開頭的方法。

只能通過類呼叫的方法叫類方法,類方法都是以"+"開頭的方法。

類方法是屬於整個類的,和具體的物件無關,所以,在類方法中無法訪問和具體物件有關的所有資料,比如屬性,比如例項變數,比如例項方法。但是,在類方法中自己建立的物件是可以的,當然也可以訪問該物件的屬性和例項變數。

2. 工廠方法(factory method)

生產(建立)物件的方法的方法叫工廠方法。

類中會經常出現一些工廠方法,其目的是為了方便建立物件。

規則:1)工廠方法一定是類方法

2)工廠方法一定返回id型別,因為要放回乙個剛建立好的物件,類似初始化方法

3)工廠方法的方法名一定類名開頭,注意是去除了字首並首字母小寫的類名,如

類名with...

+ (id)pointwithx: andy:

+ (id)point;

//

// myclass.h

// day03-1

//// created by tarena on 14-3-19.

//#import @inte***ce myclass : nsobject

-(void)method1;//例項方法

+(void)method2;//類方法

@end

//// myclass.m

// day03-1

//// created by tarena on 14-3-19.

//#import "myclass.h"

@implementation myclass

-(void)method1

+(void)method2

@end

//// trstudent.h

// day03-1

//// created by tarena on 14-3-19.

//#import @inte***ce trstudent : nsobject

@property int age;

@property char ***;

-(id)initwithage:(int)age and***:(char)***;

+(id)student;//宣告了工廠方法

+(id)studentwithage:(int)age and***:(char)***; //宣告了有參的初始化方法

@end

//// trstudent.m

// day03-1

//// created by tarena on 14-3-19.

//#import "trstudent.h"

@implementation trstudent

-(id)initwithage:(int)age and***:(char)***

return self;

}//定義有參的工廠方法,去掉字首,類名首字母小寫+with屬性(首字母大寫),依賴於有參的初始化方法

+(id)studentwithage:(int)age and***:(char)***

//定義無參的工廠方法

+(id)student

@end

//// main.m

// day03-1

//// created by tarena on 14-3-19.

//#import #import "myclass.h"

#import "trstudent.h"

int main(int argc, const char * argv)

return 0;

}

06 靜態方法和例項方法

doctype html en utf 8 jquery的靜態方法和例項方法 title script 1 定義乙個類 function aclass 2 給這個類新增乙個例項方法 直接新增給類的就是靜態方法 aclass.staticmethod function 靜態方法通過類名呼叫 aclas...

類方法和例項方法?

筆試中遇到都最最基礎的問題,我竟然有點懵了。首先沒弄清楚什麼是類方法,什麼是例項方法,現在就做乙個總結。類中的方法分為類方法和例項方法。類方法 類中用 static 修飾的方法。例項方法 也稱為物件方法,除了類方法都是例項方法。類方法在類被 jvm 虛擬機器載入進記憶體的時候就會為其分配入口位址,例...

例項變數和類變數 類方法和例項方法

類體中包括成員變數和區域性變數,而成員變數又可以細分為例項變數和類變數,在宣告成員變數的時候,用static給予修飾的稱作類變數,否則稱作例項變數。類變數也稱為static變數,靜態變數 那麼,類變數和例項變數有什麼區別呢?我們知道,乙個類通過使用new運算子可以建立多個不同的物件,這些物件將被分配...