01.類和物件
阿新 • • 發佈:2018-11-01
主函式詳解
int main(int argc, const char * argv[]) {
return 0;
}
argc
引數個數argv
指標型別的陣列,陣列長度就是第一個引數
類的宣告和實現
類的宣告
以@interface
開頭,以@end
結束 ,中間為類名類名首字母必須為大寫
@interface User
@end
宣告一個類的目的,是為了告訴系統,這個類中有哪些屬性和行為
- 類的屬性
類的屬性宣告在類名和@end
之間的大括號 中
在宣告類的屬性時,建議在所有的屬性名之前加上下劃線
_
@interface User
{
char * _name;
int _age;
}
@end
- 類的實現
以@implementation
開頭,以@end
結束 ,中間為類名,這個類名必須跟宣告的類名一致
@implementation User
@end
建立物件
如果只是按照上述的的方式對類進行宣告和實現,是無法建立物件的,而我們宣告一個類的目的,就是為了建立物件,想要讓我們宣告和實現的類具有建立物件的能力,需要將類的宣告進行如下的修改
- 繼承
NSObject
@interface User:NSObject
{
char * _name;
int _age;
}
@end
- 在主函式中建立
User
類的物件
想要通過一個類建立一個物件,必須要給類傳送一條訊息,傳送訊息的方式為[類名稱\物件名稱 方法名稱]
[User new];
如程式碼所示,我們要建立一個User
類的物件,只需要給User
類傳送一個new
的訊息即可
所謂的傳送訊息,就是呼叫方法,給
User
傳送new
訊息,就是呼叫User
類的new
方法在宣告
User
類是,要繼承NSObject
,就是為了讓User
類具備建立物件的能力,即讓User
類可以呼叫new
方法
建立物件詳解
在為User
呼叫new
方法建立物件時,系統內部會做出如下的事情
- 為
User
類創建出來的物件分配儲存空間 - 初始化
User
類創建出來的物件中的屬性 返回
User
類創建出來的物件對應的地址- 使用變數,接收
User
類呼叫new
方法的返回值
- 使用變數,接收
建立物件後,new
方法返回的是物件對應的地址,而儲存地址,就只能用指標了
User * user = [User new];
如程式碼所示,我們通過一個User
型別的指標接收了一個User
型別的物件,即用User
型別的指標儲存了User
物件的地址,則可以稱User
型別的指標變數user
為User
物件
使用一個指標儲存了一個物件的地址,就稱這個指標為某個型別的物件
OC中,
User
類其實是一個結構體,那麼user
這個指標就是指向了一個結構體讓類的屬性公開訪問
@interface User : NSObject
{
@public
char * _name;
int _age;
}
@end
- 使用物件訪問屬性
既然類是一個結構體,那麼我們就可以用指向結構體的指標來操作物件中的屬性
//指標指向的方式
user->_age = 10;
user->_name = "zhangsan";
//結構體變數的方式
(*user)._age=10;
(*user)._name = "zhagnsan";
- 輸出
//C語言方式
printf("age=%d,name=%s\n",user->_age,user->_name);
//OC方式
NSLog(@"age=%d,name=%s",user->_age,user->_name);