1. 程式人生 > >01.類和物件

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方法建立物件時,系統內部會做出如下的事情

  1. User類創建出來的物件分配儲存空間
  2. 初始化User類創建出來的物件中的屬性
  3. 返回User類創建出來的物件對應的地址

    • 使用變數,接收User類呼叫new方法的返回值

建立物件後,new方法返回的是物件對應的地址,而儲存地址,就只能用指標

User * user = [User new];

如程式碼所示,我們通過一個User型別的指標接收了一個User型別的物件,即用User型別的指標儲存了User物件的地址,則可以稱User型別的指標變數userUser物件

使用一個指標儲存了一個物件的地址,就稱這個指標為某個型別的物件

  • 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);