日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC课堂随笔——类

發布時間:2024/4/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC课堂随笔——类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.類的定義

類=屬性+方法

--屬性代表類的特征

--方法是類能對變化做出的反應

類定義的格式:類的聲明和類的實現組成

--接口(類的聲明):@interface 類名:基類的名字

.類名的首字母要大寫

.冒號表示繼承關系,冒號后面的類是父類

.NSObject是所有類的基類

.類的聲明放在“類名+.h文件中,要由兩部分組成:實例對象和方法聲明”

--實現(類的實現):@implementation類名

.方法實現

都用@結束

?

2.類的使用

.oc中對象通過指針來聲明。如ClassA*object;

oc中對象的創建,使用alloc來創建一個對象。編譯器會給對象分配一塊可用的內存地址。然后需要對對象進行初始化即調用init方法,這樣這個對象才可以使用。

如:

Person *person=[Person alloc];

person=[person init];

或者可寫成:

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

.同一類的每個對象有不同的實例變量的存儲空間,同一類的每個對象共享該類的方法。

.方法嵌套的形式來調用,如:ClassA *object=[[ClassA alloc] init];

?

3.類的訪問權限

.三種訪問權限

--公有的@public ? ? ?類本身/子類/全部文件都能訪問

--私有的@private ? ?只有類本身可以訪問

--保護的@protect ? ?類本身和子類可以訪問

屬性默認的權限是保護的;

方法默認的權限是公有的;

?

4.方法的定義

.無參無返? -(void)print;

.無參有返 -(Person *)register;

有參無返 -(void)init : (int)newId;

有參有返 -(Person *)init:(int)newId;

?

5.多參數方法的定義

帶一個參數的方法

--(Person *)init:(int) newId;

待兩個參數的方法

-(Person *)init : (int) newId andAge?:(int) newAge;

: 是方法名的一部分

-第一個方法名:init :

-第二個方法名:init :andAge :

-(Person *)initWithId:(int) newID andAge:(int) newAge andName:(NSString *)name;

可以在方法名前面加任意標記如“WithId”,“andAge”,“andName”以此類推

?

6.類方法和對象方法對比

.對象方法(實例方法)

--以減號-開頭

--只能讓對象調用,沒有對象,方法不能被執行

--對象方法能訪問實例變量(成員變量)

類方法

--以加號+開頭

--只能用類名調用,對象不能調用

--類方法不能訪問實例變量

--使用場合:當不需要訪問成員變量的時候,盡量用類方法

--類方法和對象方法可以重名

?

實例:

main.m:

#import <Foundation/Foundation.h> #import "dog.h" int main(int argc, const char * argv[]) { @autoreleasepool { //創建對象,即實例化對象 Dog *haShiQi=[[Dog alloc]init]; //方法調用 [haShiQi bark]; //屬性賦值 haShiQi->health=120; haShiQi->name=@"哈士奇"; NSLog(@"狗的姓名:%@,健康值%d",haShiQi->name,haShiQi->health); } return 0; }

Dog.m:類的實現

#import "Dog.h" //引用類的聲明文件 @implementation Dog //方法實現 -(void)bark{ NSLog(@"汪汪"); } @end

Dog.h:類的聲明

#import <Foundation/Foundation.h> @interface Dog : NSObject //聲明類Dog,繼承根基類NSObject //類的屬性 { @public; //設置類的屬性為公有(一般不允許使用) NSString *name; int health; } //對象方法 -(void)bark; @end

7.屬性的存取方法:

獲取屬性值(getter)方法的定義

--作用:返回對象內部的成員變量

--命名規范:get方法的名一般和成員變量同名;

獲取屬性值(setter)方法的定義

--作用:用來設置成員變量,可以在方法里過濾掉一些不合理的值

--命名規范:

--方法都是以set開頭,而且后面跟上成員變量名,首字母必須大寫

--形參名稱不要和成員變量同名

?

8.getter和setter方法實例

main:

#import <Foundation/Foundation.h> #import "dog.h" int main(int argc, const char * argv[]) { @autoreleasepool { //創建對象,即實例化對象 Dog *haShiQi=[[Dog alloc]init]; //方法調用 [haShiQi bark]; //屬性賦值 [haShiQi setName:@"哈士奇"]; //調用setter方法賦值 [haShiQi setHealth:120]; NSLog(@"狗的姓名:%@ 健康狀況:%d",haShiQi.name,haShiQi.health); } return 0; }

Dog.m:類的實現

#import "Dog.h" //引用類的聲明文件 @implementation Dog //方法實現 -(void)bark{ NSLog(@"汪汪"); } //setter方法 -(void)setName:(NSString *)newName{ name=newName; } //getter方法 -(NSString *)name{ return name; } //setter方法 -(void)setHealth:(int)newHealth{ health=newHealth; } //getter方法 -(int)health{ return health; } @end

Dog.h:類的聲明

#import <Foundation/Foundation.h> @interface Dog : NSObject //聲明類Dog,繼承根基類NSObject //類的屬性 { NSString *name; int health; } //對象方法 -(void)bark; -(void)setName:(NSString *)newName; //setter方法 -(NSString *)name; //getter方法 -(void)setHealth:(int)newHealth; -(int)health; @end

9.自動生成屬性的存取方法

@property語法

@synthesize

封裝的好處

--過濾掉不合理的值

--屏蔽內部的賦值過程

--讓外界不必關注內部的細節

?

10.自動生成屬性的存取方法實例

main:

#import <Foundation/Foundation.h> #import "dog.h" int main(int argc, const char * argv[]) { @autoreleasepool { //創建對象,即實例化對象 Dog *haShiQi=[[Dog alloc]init]; //方法調用 [haShiQi bark]; //屬性賦值 [haShiQi setName:@"哈士奇"]; [haShiQi setHealth:120]; NSLog(@"狗的姓名:%@ 健康狀況:%d",haShiQi.name,haShiQi.health); } return 0; }

Dog.m:類的實現
#import "Dog.h" //引用類的聲明文件 @implementation Dog //方法實現 -(void)bark{ NSLog(@"汪汪"); } @synthesize name,health; //封裝,代替了setter,getter @end

Dog.h:類的聲明 #import <Foundation/Foundation.h> @interface Dog : NSObject //聲明類Dog,繼承根基類NSObject //類的屬性 { @public; //設置類的屬性為公有 NSString *name; int health; } -(void)bark; @property int health; //封裝,代替了setter,getter @property NSString *name; @end

11.方法重載
·OC中不是嚴格的函數重載

命名沖突:

-(int)doSomething(int)X;

-(int)doSomething(float)X;

命名沖突:

-(int)doSomething(int)x:(int)y;

-(int)doSomething(float)x:(int)y;

不沖突:

-(int)doSomething(int)x:(int)y;

-(int)doSomething(int)x: andY:(float)y;

因為一個是“doSomething:”,“另一個是doSomething::”

?

12.繼承

·不改變原來模型的基礎上,拓充方法

·建立了類與類之間的聯系

·抽取了公共代碼

·減少冗余代碼

·壞處:耦合性強

轉載于:https://www.cnblogs.com/jiangyicheng/p/5103897.html

總結

以上是生活随笔為你收集整理的OC课堂随笔——类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久嫩草| 国产一区二区三区四区 | 国产欧美日韩三级 | 日韩大尺度在线观看 | 超碰v| 在线观看亚洲 | 欧美日韩在线观看视频 | 丰满少妇在线观看网站 | 污漫在线观看 | 天天色棕合合合合合合合 | 国产在线视频你懂的 | 大色av | 在线观看免费视频一区二区 | 久久av在线播放 | 欧美日韩少妇精品 | 日韩天堂在线观看 | 国产一级片免费看 | 国产调教在线观看 | 美人被强行糟蹋np各种play | 成人免费在线看片 | 国产免费不卡视频 | 久草精品在线观看 | 新婚若妻侵犯中文字幕 | 国内偷拍精品视频 | 国产又粗又深又猛又爽又在线观看 | 欧美性一区二区三区 | 精品小视频在线观看 | 日日爽天天 | 在线视频综合网 | 亚洲AV午夜福利精品一级无码 | 免费观看a级片 | 丰满少妇aaaaaa爰片毛片 | 丁香婷婷在线 | 香蕉视频一区二区三区 | 天天色成人 | 女裸全身无奶罩内裤内衣内裤 | 东北少妇av | 特黄老太婆aa毛毛片 | 精品一区二区毛片 | 杨幂一区二区国产精品 | 探花视频在线版播放免费观看 | 国产在线伊人 | 亚洲aaaaaaa| 无码少妇一级AV片在线观看 | 91极品美女 | 日韩一区二区三区在线视频 | 欧美性受xxxx | 免费国产 | 26uuu国产精品视频 | 亚洲成人黄色在线 | 午夜黄色av | 免费极品av一视觉盛宴 | 色妇网| 日韩免费视频网站 | 亚洲中文字幕视频一区 | 欧美xxxxx视频 | 免费麻豆| 婷婷在线网 | 亚洲人成免费 | 九九热国产视频 | 制服.丝袜.亚洲.另类.中文 | 超碰成人在线观看 | 小sao货大ji巴cao死你 | 在线中文字幕观看 | 天天夜碰日日摸日日澡性色av | 理伦毛片| 严厉高冷老师动漫播放 | 亚洲无人区码一码二码三码 | 向日葵视频在线播放 | 黄色一级欧美 | 中文字幕在线观看网址 | 国模精品视频一区二区 | 伊人久久久久久久久久久久久 | 免费三级黄色 | 波多野结衣精品 | 欧美在线黄| 99热这里只有精品在线观看 | 亚洲第一二三区 | 日批网址 | 人人草网站 | 亚洲免费黄色网 | 国产精品88久久久久久妇女 | 亚洲美女精品 | 青青草视频免费 | 潘金莲一级淫片aaaaa武则天 | 人人妻一区二区三区 | 午夜激情欧美 | 91蝌蚪91密月| 亚洲中文字幕无码一区 | 免费一级欧美 | 久久精品一区二区三区黑人印度 | 亚洲欧美国产精品久久久久久久 | 呦呦精品 | 亚洲人交配 | 欧美日韩中文字幕一区二区 | 久久无码国产视频 | 欧洲一区二区在线观看 | 国产精品久久久久久久久久久久久久久久 | 日日夜夜超碰 |