1. 程式人生 > >Object-C入門,建立一個Person工程,給新手用

Object-C入門,建立一個Person工程,給新手用

OC語言的基本特點:

(1)OC語言是C語言的一個超集,只是在C的基礎之上加上了面對物件(oo)的特性;

(2)OC與Java語言相同都是單繼承,這一點與C++語言不同(多重繼承);

(3)OC不支援名稱空間機制,取而代之的是在類名之前新增字首,以此來區分。

建立一個Person工程

main.m

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[])
{
 
    /*____________________建立person物件______________________*/
    //在OC裡面物件使用指標宣告的
    //alloc在記憶體中申請一塊記憶體,用來儲存此物件的資訊
//    Person *person = [Person alloc];
    //呼叫init方法初始化一些預設的資料
//    person = [person init];
    
    //以上兩步就建立好了一個物件
    //等價與下面的這句
    Person *person = [[Person alloc] init];
    
    //new建立物件,不推薦
//    Person *person1 = [Person new];
    
    /*________________________OC方法的呼叫__________________________*/
//    [物件/類  方法名];
    
    //類方法的呼叫
    [Person testClass];
    
    //例項方法的呼叫
    //不帶引數的方法的呼叫
    [person shopping];
    
    //帶一個引數的方法的呼叫
    [person shopping:3000];
    
    //帶兩個引數的方法的呼叫
    [person shopping:400 withPlace:@"大物美"];
    
    NSInteger a = [person shoppingPrice];
    NSLog(@"a:%ld",a);
    
    return 0;
}
Person.h
#import <Foundation/Foundation.h>

//:後面的就是當前類的父類,NSObject是一切類的根類
@interface Person : NSObject {

    //在{}之間定義屬性
    //屬性、全域性變數、例項變數、成員變數
    
    NSInteger age;  //年齡
    
    NSString *name; //名字
    
    BOOL sex;   //性別
    
    //注意:在OC裡面不能在定義屬性的時候對屬性賦值
//    float height = 1.70;   //身高
    
}

/*--------------------設定類的方法---------------------*/

//C語言定義函式
//函式返回值型別 函式名  (形參列表);
//int getSum(int a, int b);

//OC中方法的定義
//方法的型別 (方法的返回值型別)方法名  引數

/*--------------------設定類的方法(例項方法)---------------------*/

//例項方法
//方法名:   shopping
- (void)shopping;   //購物的方法,不帶引數


//方法名:  shopping:(注意:“:”是方法名的一部分)
- (void)shopping:(float)price;  //帶一個引數的


//方法名:   shopping: withPlace:
- (void)shopping:(float)price withPlace:(NSString *)place;   //帶兩個引數

//返回型別為整型
- (NSInteger)shoppingPrice;

/*--------------------設定類的方法(累方法)---------------------*/
+ (void)testClass;

@end
Person.m
#import "Person.h"

@implementation Person

//不帶引數的方法
- (void)shopping {

    //在例項方法類裡面可以用檔期類的屬性
//    NSLog(@"%@",name);
    
    NSLog(@"購物了");
    
}

//帶一個引數的方法
- (void)shopping:(float)price {
    NSLog(@"購物消費了%f元",price);
}

//帶兩個引數的方法
- (void)shopping:(float)price withPlace:(NSString *)place {

    NSLog(@"在%@購物消費了%f元",place,price);
    
}

- (NSInteger)shoppingPrice {

    NSInteger price = 100;
    
    return price;
}

//類方法
+ (void)testClass {

    //在類方法中無法訪問屬性
//    NSLog(@"%@",name);
    
    NSLog(@"這是一個類方法");
    
}

@end