天天看點

Objective-c語言 - 類和對象

"一:類和對象

1>對象:是一個能夠确定的唯一的實體.

2>類:是對一系列具有共同特征和相同行為的對象的統稱.

類: 類就是設計師的圖紙

對象: 根據圖紙生産出來的實實在在的藝術品

"二:類的三要素

1>類名: 這類事物的統稱

2>屬性: 這類事物的共同特征(這類事物所擁有的)

3>方法: 這類事物有哪些共同行為

"三:設計并定義一個類

1> 設計1個人類.

類名:人類

屬性:姓名,年齡

行為:跑步,打招呼

2>定義這個類

1,類的聲明

2,類的實作

"四:建立對象并調用方法

1> 在方法中可以通路屬性

如下

#import <Foundation/Foundation.h>

//類的聲明

@interface Person: NSObject

{

    @public

    NSString *_name;

    int _age;

}

- (void)run;

- (void)sayHi;

@end

//類的實作

@implementation Person

- (void)run

{

    NSLog(@"我在跑步");

}

- (void)sayHi

{

    NSLog(@"哈喽,大家好,我叫%@,今年%d歲了",_name, _age);

}

@end

int main(int argc,const char * argv[]) {

    //建立對象

    Person *xiaoming = [Personnew];

    //指派屬性

    xiaoming->_name = @"小明";

    xiaoming->_age = 18;

    //調用方法

    [xiaoming run];

    [xiaoming sayHi];

    return 0;

}

"五:練習

寫一個學生類

屬性:姓名學号 年齡

建立一個學生對象,給學生對象的各個屬性指派,并列印學生對象各個屬性的值.

@interface Student : NSObject

{

    @public

    //姓名

    NSString * _name;

    //學号

    int  _schoolNum;

    //年齡

    int _age;

}

@end

@implementation Student

@end

int main()

{

    //建立對象

    Student * xiaoming = [Student new];

    //指派屬性

    xiaoming->_name = @"無色大師";

    xiaoming->_schoolNum = 1;

    xiaoming->_age = 10;

    //列印

    NSLog(@"姓名%@學号%d年齡%d", wuse->_name, wuse->_schoolNum, wuse->_age );

    return 0;

}

"六:下面代碼的作用

int main()

{

    //有一個學生類型的指針指向了一個學生對象

    Student * wuse = [Student new];

    return 0;

}

"七:注意點

1>類的聲明和類的實作中,類名必須一緻.

2> 類的屬性必須寫在 @interface 和 @end 之間的"{ }"内部.

3>屬性要用_開頭.

4>一個指針指向一個對象,*要麼和類名在一起,要麼和變量名在一起,要麼在中間,要統一格式,規範書寫.

"如下:

@interface Student : NSObject

{

@public

    //姓名

    NSString * _name;

}

@end

@implementation Student

int main()

    Student *xiaoming = [Student new];

    return 0;

}

5>對象,實質上是一個存儲對象的位址的指針變量.是以要符合變量的命名規範.

1,規定 : 變量名隻能由字母,_,$,數字組合而成,且不能以數字開頭.

2,規範 : 見名知意,駝峰式命名法

6>通過指向對象的指針通路對象的屬性的方式(*對象名).屬性.不建議使用這種方式,建議使用"對象名->_屬性名"通路.

int main()

{

    Student * xiaoming  = [Student new];

    xiaoming->_name = @"無色";

    NSLog(@"%@",xiaoming->_name);

    NSLog(@"%@",(*xiaoming)._name);

    return 0;

}

7>通過對象名通路屬性,注意文法格式,對象名->_屬性名 (這個屬性名是帶_的)

int main()

{

    Student * xiaoming  = [Student new];

    xiaoming->_name = @"無色";

    NSLog(@"%@",xiaoming->_name);

    return 0;

}

8>如果通過對象名通路屬性的時候報錯了,檢查在類的聲明部分聲明屬性的時候,加上一個@public修飾即可

9>為對象的屬性指派的時候,要注意類型比對,否則會出問題