中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

08.實例方法和類方法的區別與及工廠方法

發布時間:2020-06-22 19:28:03 來源:網絡 閱讀:490 作者:forest馮宋林 欄目:開發技術


實例方法和類方法的區別
區別1:
        實例方法: 實例方法屬于實例,也就是說屬于對象,通過實例調用的方法就是實例方法,實例方法只能通過實例(對象)調用
        聲明方式: -(返回值)方法名:參數  強調的是  “-”
        
        類方法:        類方法屬于類的,調用的時候,只能使用類名調用
        聲明方式:+(返回值)方法名:參數   強調的是 “+”

區別2:
         實例方法: 實例方法在運行時只關注實例的信息(實例變量),實例方法中可以訪問或修改實例變量

        類方法:    類方法在運行時只關注類中的信息,類方法中不可訪問或修改實例變量

區別3:
        實例方法: 實例方法中可以訪問類方法
        類方法: 類方法中不能訪問實例方法


工廠方法
        工廠方法是類方法
        工廠創建對象用
        工廠方法 返回值是 當前類型, 方法名去掉前綴首字母小寫如 TRPoint類的工廠方法名是 point

下面來上代碼:


main.m文件的代碼


#import <Foundation/Foundation.h>
#import "MyPoint.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        MyPoint *point = [[MyPoint alloc]init];

        //實例方法屬于實例,用實例調用
        [point show];

        //類方法屬于類,用類名調用
        //[point2 show2];error

         [MyPoint show2];//right

        MyPoint *point2 = [ MyPoint createPoint];
        [point2 show];//x = 10,y = 20
    }
    return 0;
}


Mypoint.h文件的代碼

#import <Foundation/Foundation.h>

@interface MyPoint : NSObject
@property int x;
@property int y;
-(id)init;
//With W一定要大寫
//-(id)initWithX:(int)x andY:(int)y;
-(void)show;//聲明實例方法
+(void)show2;//聲明類方法
+(void)show3;//聲明類方法
+(id)createPoint;//創建點的類方法
@end


MyPoint.m文件的代碼

#import "MyPoint.h"


@implementation MyPoint
-(id)init
{
    self = [super init];
    if (self) {
        self.x = 100;//_x = 100;
        self.y = 200;
    }
    
    return  self;
}

-(void)show
{
    //實例方法可以修改實例變量,實例方法中self表示當前對象,通過對象可以找到實例變量
    NSLog(@"x = %d,y = %d",_x,_y);
    
    //實例方法中可以調用類方法   
    //[MyPoint show2];
    
}

+(void)show2
{
    //類方法中self不再是對象,那么類方法中就沒有當前對象的概念了,找不到對象就更加找不到對象中的實例變量了
    //類方法中不可以訪問實例變量
   // NSLog(@"x = %d,y = %d",_x,_y);
    //類方法中self標書當前類
    NSLog(@"類方法被調用");
    
    //類方法中不可以調用實例方法

    //[self show];error
    
    //類方法中可以調用類方法
    [self show3];
}

+(void)show3
{
    NSLog(@"我也是一個類方法");
}



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

顺平县| 元阳县| 贵溪市| 青神县| 延边| 偃师市| 无为县| 聂荣县| 宜昌市| 九台市| 罗平县| 辽中县| 蓬安县| 阿坝| 汾阳市| 冷水江市| 泽普县| 辽阳县| 梨树县| 潍坊市| 黎川县| 新巴尔虎右旗| 长寿区| 石嘴山市| 博乐市| 德钦县| 三台县| 利川市| 宜昌市| 漾濞| 永康市| 全椒县| 塘沽区| 越西县| 广州市| 尚义县| 天全县| 大连市| 闽侯县| 望谟县| 赫章县|