日韩性视频-久久久蜜桃-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课堂随笔——类的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色人综合 | 五月婷婷综合网 | 九一国产精品 | 操碰视频在线 | 波多野结衣免费在线视频 | 韩国妻子的朋友 | 国产一区二区三区免费观看 | 神马久久久久久久 | 北条麻妃青青久久 | 在线黄色观看 | 亚洲爆爽 | 亚洲精品色图 | 六月激情婷婷 | 91综合网 | 曰批视频在线观看 | 久久精品国产av一区二区三区 | 狠狠躁夜夜躁人人爽视频 | 动漫一区二区三区 | 一区二区免费视频 | 成人国产av一区二区三区 | 男男在线观看 | 日韩精品三级 | 国产欧美一区二区三区在线看蜜臂 | 麻豆亚洲精品 | 欧美三级日本三级 | av观看免费| 夜夜夜久久久 | 在线播放少妇奶水过盛 | 中文一区二区在线 | 久久ww| 99久久精品久久久久久清纯 | 国产尻逼| 少妇太紧太爽又黄又硬又爽 | 91九色中文| 性少妇mdms丰满hdfilm | 制服av网 | 欧美草逼视频 | 国产精品蜜臀av | 欧美熟女一区二区 | 国产午夜在线一区二区三区 | proumb性欧美在线观看 | 久久精品视频3 | 日韩激情一区二区三区 | 91挑色| 无码精品在线视频 | 日欧美女人 | 91这里只有精品 | 日韩精品一区二区三区视频在线观看 | 非洲黄色大片 | 99re伊人 | 娇小6一8小毛片 | 寻找身体恐怖电影免费播放 | 北条麻妃一区二区三区 | 天天射天天操天天干 | 波多野结衣一区二区三区 | 欧美精品久久久久久久自慰 | 日本欧美国产在线 | 亚欧洲精品视频在线观看 | 黑人借宿巨大中文字幕 | 午夜影院在线观看免费 | 91网站大全| 久久午夜夜伦鲁鲁片无码免费 | 色一涩| 国产色爽 | 99福利影院 | 国产精品成人国产乱一区 | 老妇裸体性激交老太视频 | 波多野结衣在线免费观看视频 | 日韩大尺度视频 | 日本美女黄色一级片 | 青青操91| 国产精品黑人一区二区三区 | av网站国产 | 韩国三级丰满少妇高潮 | 深夜福利国产精品 | 综合网视频 | 欧美性猛交乱大交xxxx | 国产精品乱码一区 | 热久久精 | 女人18毛片一区二区三区 | 又欲又污又肉又黄短文 | 国产第二页 | 青青草av在线播放 | 99久久亚洲精品 | 一本色道久久hezyo加勒比 | 免费99精品国产自在在线 | 樱桃av| 99热这里只有精 | 一区二区精品在线观看 | 国产成人精品a视频一区 | 欧产日产国产精品 | 国产精品毛片久久久久久 | 九九视频在线免费观看 | 欧美妞干网| 人人澡人人干 | 91精品国产91综合久久蜜臀 | 欧美一区,二区 | 操碰视频在线 | 欧美日韩不卡一区二区三区 |