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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

發布時間:2025/6/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.





一. 類定義


類定義需要實現兩部分 :?

-- 接口部分 : 定義類的成員變量和方法, 方法是抽象的, 在頭文件中定義;

-- 實現部分 : 引入接口部分的頭文件, 實現抽象方法;



1. 接口部分定義?



(1) 接口部分定義格式


接口部分定義格式 :?

@interface className : superClassName

{

type _variableName;

... ...

}

- (type) methodName : type parameterName;

@end

-- 接口定義開始標識 : @interface 表示接口開始定義;

-- 接口定義結束標識 : @end 表示接口定義結束;

-- 接口名稱定義 : 緊跟在 @interface 后 是類名稱;

-- 父類接口 : 如果有父類, 在接口名稱后面的 : 后寫出;

-- 成員變量定義 : 在 @interface 后的 {} 中定義 成員變量;

-- 成員方法 : 在 {} 中定義完成員變量后定義成員方法;



(2) 成員變量定義

.

注意 : 成員方法中的 返回值類型 和 參數類型必須使用 () 括起來, 以便與 C 語言方法區分;

.

成員變量簡介 :?

-- 定義格式 : 類型 成員變量名, 如 int _age;

-- 定義位置 : 在 @interface 的下一行的 大括號中定義, 至右成員變量是定義在大括號中的;

-- 可用類型 : 基本類型, 構造類型, 各種指針型類型;

-- 命名規范 : 成員變量一般建議 使用 "_" 開頭, 駝峰式命名;



(3) 成員方法


成員方法簡介 :?

-- 成員方法格式 : 方法類型標識 (返回值類型) 方法名稱 : (參數類型) 參數名稱 方法簽名關鍵字 : (參數類型) 參數名稱;

-- 方法標識符 : "+" 表示類方法, "-" 表示實例方法;

-- 方法簽名關鍵字 : 由 方法名, 形參標簽, 冒號組成;

-- 形參標簽 : Object-C 慣例, 除了第一個形參之外, 為每個形參都制定一個形參標簽;


方法簽名意義 :?

-- "method" : 表示方法沒有參數;

-- "method : " : 表示方法有一個形參;

-- "method : param : " : 表示方法有兩個形參;



(4) 接口部分代碼示例


示例 :?

/*************************************************************************> File Name: Student.h> Author: octopus> Mail: octopus_truth.163.com > Created Time: 日 12/14 19:51:16 2014類接口部分示例************************************************************************/ #import <Foundation/Foundation.h>@interface Student : NSObject {/** 成員變量定義在 接口聲明的花括號中* 注意成員變量之前以 "_" 開頭*/NSString * _name;int _age; }/** 定義 setData : setAge : 方法* - 表示該方法需要通過對象調用* setAge 是形參標簽*/ - (void) setData : (NSString*)name setAge:(int)age;// 定義 speak : 方法 - (void) speak : (NSString*) content;// 定義一個不帶參數的方法 - (NSString*) toString;+ (void) fuck;


2. 實現部分定義



(1) 實現部分定義格式


實現部分格式 :?

@implementation className

{

type _variable;

}

- (type) methodName : (type)param

{

//方法體

}

@end



(2) 類名 與 父類


實現部分類名要求 : 類名 與 類 接口部分類名相同;


父類繼承 : 如果有父類, 可以使用 "@implementation 類名 : 父類名" 表示;



(3) 實現部分的成員變量 和 成員方法


聲明成員變量 : 如果在實現部分聲明成員變量, 那么該成員變量在外部不可訪問, 只能在實現部分訪問;


成員方法簡介 :?

-- 實現抽象成員方法 : 實現接口部分定義的抽象方法, 即為接口部分方法寫方法體;

-- 聲明成員方法 : 在實現部分聲明成員方法, 外部不可訪問, 只能在實現部分進行訪問;



(4) 抽象方法示例


代碼示例 :?

/*************************************************************************> File Name: Student.m> Author: octopus> Mail: octopus_truth.163.com > Created Time: 日 12/14 20:04:28 2014************************************************************************/ /** 這里導入 Student.h 包即可, 因為 在 Student.h 包已經導入了 Foundation.h 頭文件了*/#import <Student.h>@implementation Student{//定義的該成員變量 只能在實現部分使用, 是隱藏的成員變量;int _class;}//定義了 setData : setAge : 方法- (void) setData : (NSString*)name setAge:(int)age{_name = name;_age = age;}- (void) speak : (NSString)content{NSLog(@"%@", content);}//定義了一個帶返回值的方法- (NSString*) toString{return [NSString stringWithFormat : @"name = %@, age = %d", _name, _age];}+ (void) fuck{NSLog(@"fuck");} @end



二. 對象詳解



1. 對象 定義, 創建 和 方法調用



(1) 對象定義


變量定義語法 : 類型* 對象名;

-- 示例 : 如上面定義的 Student 類型的對象, Student* student;



(2) 創建對象


創建對象語法 : [[類名 alloc] 初始化方法] , 示例 [[Student alloc] init];

-- alloc : alloc 是一個關鍵字, 表示這是創建對象的語句, 相當于 Java 中得 new, 負責分配內存空間 和 創建對象;

-- 初始化方法 : 所有的對象都從 NSObject 繼承了一個默認的初始化方法 init;


另一種創建對象方法 : [類名 new], 示例 [Student new] ;

-- 解析 : 這是為了照顧 Java 程序員習慣, 一般不常用;



(3) 方法調用


方法調用語法 : [調用者 方法名:參數1 形參標簽:參數2 ...], 示例 [stident fuck];

-- 調用者 : 可以是對象 也可以是 類, 對象調用實例方法, 類 調用類方法;



(4) 示例?


代碼示例 :?

-- 代碼 :?

/*************************************************************************> File Name: StudentTest.m> Author: octopus> Mail: octopus_truth.163.com > Created Time: 日 12/28 21:58:41 2014************************************************************************/#import <Foundation/Foundation.h> #import "Student.h"int main(int argc, char * argv[]) {@autoreleasepool {//定義變量Student* student;//創建變量student = [[Student alloc] init];//方法調用, 調用類方法, 注意 類方法只能由類調用, 不能由對象調用[Student fuck];//調用帶參數的方法[student speak : @"fuck you!"];//為成員變量賦值[student setData : @"悟空" setAge : 25];//打印成員變量NSString* stuStr = [student toString];NSLog(@"Student is : %@", stuStr);} }

-- 執行結果 :?

octopus-2:oc_object octopus$ clang -fobjc-arc -framework Foundation Student.m StudentTest.m octopus-2:oc_object octopus$ ./a.out 2014-12-28 23:22:37.702 a.out[415:507] fuck 2014-12-28 23:22:37.704 a.out[415:507] fuck you! 2014-12-28 23:22:37.705 a.out[415:507] Student is : name = 悟空, age = 25



2. 對象 和 變量?



(1) 對象 和 指針變量概念


概念引入 : Student* student = [[Student alloc] init], 產生了 Student 對象 和 student 變量;

-- 對象 : 創建了一個 Student 類型的對象;

-- 指針變量 : person 就是指向對象的指針變量;



(2) 對象 和 指針變量存儲內容


對象 和 變量的存儲內容 :?

-- 對象 : 存儲了創建的 Student 對象的 成員變量;

-- 指針變量 : 存儲了該對象在堆內存中得首地址, 即第一個成員變量的首地址;



(3) 對象 和 指針變量 的位置


對象 和 變量的保存地址 :?

-- 對象 : 對象保存在 堆(heap)內存中;

-- 指針變量 : 保存在main()方法的動態存儲區中;



(4) 對象 與 指針變量對應關系


對應關系 : 一個指針只能指向一個對象, 一個對象可以有多個指針指向她;



(5) 對象釋放


內存泄露 : 如果沒有指針指向某個對象, 那么這個對象需要被釋放掉, 否則會造成內存泄露;

-- 解決方案 : 使用自動引用計數, 即將程序放在 @autoreleasepool{}中;




3. self 關鍵字



(1) 調用對象本身的方法 或 變量


調用本身方法 : 在對象中, 調用對象本身的方法 或 變量;

-- 調用本身方法 : [self 方法名 : 參數1 形參標簽:參數2 ...] ;

-- 調用本身成員變量 : self->成員變量名 ;


注意 : self 不能調用 類方法 和 在類方法中調用, self 使用方法與 對象相同;



(2) 作用?


區分成員變量 和 局部變量 : 如果局部變量與成員變量重名, 使用 self->成員變量名 可以表示成員變量, 默認的名稱就是局部變量;



(3) 代碼示例?


代碼示例 : 修改上面的 Student.m 代碼, 編譯后執行, 注意有警告, 方法中得成員變量 與 形參名稱 重復;

-- 代碼 :?

/*************************************************************************> File Name: Student.m> Author: octopus> Mail: octopus_truth.163.com > Created Time: 日 12/14 20:04:28 2014************************************************************************/ /** 這里導入 Student.h 包即可, 因為 在 Student.h 包已經導入了 Foundation.h 頭文件了*/#import "Student.h"@implementation Student{//定義的該成員變量 只能在實現部分使用, 是隱藏的成員變量;int _class;}//定義了 setData : setAge : 方法- (void) setData : (NSString*)_name setAge:(int)_age{//self 關鍵字用于 區分 成員變量 和 方法的形參 self->_name = _name;self->_age = _age;}- (void) speak : (NSString*)content{NSLog(@"%@", content);}//定義了一個帶返回值的方法- (NSString*) toString{//self 關鍵字用于調用本對象的方法[self speak : @"正在調用 toString 方法 : "];return [NSString stringWithFormat : @"name = %@, age = %d", _name, _age];}+ (void) fuck{NSLog(@"fuck");} @end

-- 執行結果 :?

octopus-2:oc_object octopus$ clang -fobjc-arc -framework Foundation Student.m StudentTest.m Student.m:21:16: warning: local declaration of '_name' hides instance variable [-Wshadow-ivar]self->_name = _name;^ Student.m:22:15: warning: local declaration of '_age' hides instance variable [-Wshadow-ivar]self->_age = _age;^ 2 warnings generated. octopus-2:oc_object octopus$ ./a.out 2014-12-29 00:49:46.728 a.out[558:507] fuck 2014-12-29 00:49:46.730 a.out[558:507] fuck you! 2014-12-29 00:49:46.731 a.out[558:507] 正在調用 toString 方法 : 2014-12-29 00:49:46.731 a.out[558:507] Student is : name = 悟空, age = 25



4. id類型



(1) id 類型


id類型 : 代表所有的對象類型;

-- 示例 : id student = [[Student alloc] init];



(2) 動態綁定


動態綁定 : 跟蹤對象所屬類, 在運行時判定對象所屬類, 并在運行時確定調用方法, 不是在編譯時;

-- 使用情況 : id 類型的變量調用方法時會執行動態綁定;



(3) 代碼示例


代碼示例 :?

-- 代碼 :?

/*************************************************************************> File Name: StudentTest.m> Author: octopus> Mail: octopus_truth.163.com > Created Time: 日 12/28 21:58:41 2014************************************************************************/#import <Foundation/Foundation.h> #import "Student.h"int main(int argc, char * argv[]) {@autoreleasepool {//定義變量Student* student;//創建變量student = [[Student alloc] init];//方法調用, 調用類方法, 注意 類方法只能由類調用, 不能由對象調用[Student fuck];//調用帶參數的方法[student speak : @"fuck you!"];//為成員變量賦值[student setData : @"悟空" setAge : 25];//打印成員變量NSString* stuStr = [student toString];NSLog(@"Student is : %@", stuStr);} }

--執行結果 :?

octopus-2:oc_object octopus$ clang -fobjc-arc -framework Foundation Student.m StudentTest.m Student.m:22:16: warning: local declaration of '_name' hides instance variable [-Wshadow-ivar]self->_name = _name;^ Student.m:23:15: warning: local declaration of '_age' hides instance variable [-Wshadow-ivar]self->_age = _age;^ 2 warnings generated. octopus-2:oc_object octopus$ ./a.out 2014-12-29 01:09:23.548 a.out[605:507] fuck 2014-12-29 01:09:23.550 a.out[605:507] fuck you! 2014-12-29 01:09:23.550 a.out[605:507] 正在調用 toString 方法 : 2014-12-29 01:09:23.550 a.out[605:507] Student is : name = 悟空, age = 25 2014-12-29 01:09:23.551 a.out[605:507] 正在調用 toString 方法 : 2014-12-29 01:09:23.551 a.out[605:507] id is : name = 八戒, age = 23



總結

以上是生活随笔為你收集整理的【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美一区二区三区久久妖精 | 欧美草逼视频 | 国产视频一 | 台湾佬综合网 | 国产真人无码作爱视频免费 | 国产无遮挡裸体免费视频 | 色呦呦在线看 | 手机版av| 成年人在线免费观看 | 黄色免费一级视频 | 99re伊人| 婚后打屁股高h1v1调教 | 一级艳片新婚之夜 | 国产精品美女久久久久久久 | 91免费在线播放 | 成人一区二区免费视频 | 荒野求生21天去码版网站 | 色蜜桃av | 摸大乳喷奶水www视频 | 国产综合视频在线观看 | 九九在线视频 | 国内自拍偷拍网 | 久章操| 色视频综合| 久久av资源站 | 国产成人亚洲精品 | 非洲黑寡妇性猛交视频 | 国产一卡二卡在线 | 欧美日韩国产高清 | 蜜桃久久精品 | 熟妇女人妻丰满少妇中文字幕 | 亚洲欧洲一级 | 欧美色一区二区三区在线观看 | 老色批影院 | 伊人精品在线 | 精品人妻一区二区三区在线视频 | 欧美 国产 综合 | 国产无精乱码一区二区三区 | 污黄视频网站 | 少妇做爰k8经典 | 少妇一级淫片日本 | 少妇大叫太粗太大爽一区二区 | 亚洲男人天堂电影 | 美女国产免费 | 黄网站视频在线观看 | 99免费视频 | 九九九九九伊人 | 欧美成人一区二区三区四区 | 国产精品日韩专区 | 精品国产精品网麻豆系列 | 91丝袜国产在线观看 | 成年人在线免费观看视频网站 | 亚洲色成人www永久在线观看 | 午夜精品福利一区二区三区蜜桃 | 狼性av懂色av禁果av | 一区二区三区入口 | 日韩国产精品视频 | 免费色视频 | 爆操老女人 | 久久综合综合久久 | 在线观看 一区 | 自拍视频一区二区 | 少妇一级淫片免费看 | 疯狂做受xxxx国产 | 91国内精品久久久 | 美女视频免费在线观看 | 网站在线观看你懂的 | 午夜黄色录像 | 色伊伊 | 国产精品视频久久久久 | 日韩精品免费观看 | 激情午夜天 | 一本一道久久综合 | 黄色在线观看国产 | 成年人福利| 日本一级淫片色费放 | 日韩一区二区三区四区五区六区 | 国产精品xxx在线观看 | 一区免费在线 | 中文综合网 | 成人啪啪| 亚洲经典在线观看 | 亚洲少妇色 | 欧美日韩综合 | 青青91| 久久靖品 | 亚洲一区免费看 | 99精品欧美 | 快播日韩 | 成人亚洲玉足脚交系列 | 亚洲一区二区视频在线播放 | 澳门免费av | 久久久蜜桃一区二区 | 欧美色88| 99国内揄拍国内精品人妻免费 | 国偷自产av一区二区三区 | 少妇高潮喷水在线观看 | 女人下部全棵看视频 | 久久久三级|