OC 1.类和对

2016-08-05  本文已影响0人  前进的苏辰

(1).#import <Foundation/Foundation.h>

1.类:分为类的声明和类的实现两个部分

//类的声明 @interface就是OC中声明一个类的关键字

struct Person {
//成员变量
char name[20];
int age;
int face;
};

//类的声明是一个固定的结构
//@interface 类型: 父类名(NSObject) {} @end
//声明一个YTPerson类,它有三个成员变量
@interface YTPerson : NSObject{
//NSObject是OC中所有类直接或者间接的父类,也是OC中所有类的根类
//这里用来声明成员变量(属性、字段)
char name[20];
int age;
int face;
}
//这里用来对处理数据的方法的封装(成员方法) 函数 == 方法 == 消息
//声明成员方法,成员方法的个数不定
//void func(void); 这个就是成员方法
//- 代表这个方法是对象方法,调用的时候需要使用类的对象来调用
//+ 代表这个方法是类方法
//OC中方法的返回值类型需要使用()括起来
//在没有参数时函数名后边的括号省略(必须省略)

//类的实现

//@implementation 类实现的关键字
//固定格式 @implementation 类名 @end
@implementation YTPerson

//这儿写成员方法的实现
//OC方法的实现和C语言一样
-(void)func{
//函数体(函数功能的实现),在main函数里面写的东西,在这儿都可以实现
//在这儿可以使用类的成员变量
age = 20;
printf("%d\n",age);
}

@end

//主函数开始的地方

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

    struct Person person1; //创建一个结构体变量,person1在栈上
    
    //OC中使用类创建一个对象,都是在堆上开辟空间来存储数据的
    //在C语言中使用malloc函数在堆上开辟空间存储数据

    char * p = malloc(400); //会在堆上开辟400个字节的内存空间,返回的这400字节的首地址存到指针变量p中
    
    //[]是OC中用来调用函数的语法
    //YTPerson 来调用alloc方法,是alloc可以在堆上开辟YTPerson这麽大的内存空间
    //person2实质是指向对象(YTPerson这个类定义的变量)的指针,但是我们一般情况下说person2是一个对象
    
    YTPerson * person2 = [YTPerson alloc]; //使用OC中alloc方法在堆上开辟空间存储数据,返回的是一个指向对象的指针
    
    //改变一个结构体变量的成员变量的方式
    struct Person * person3 = &person1;
    person1.age = 20;
    person3 -> age = 22;
    
    //OC类创建的对象中在外部函数(main)不能直接使用成员变量
    //内部函数->成员函数(方法)     间接使用
    //        person2 -> age = 18;
    
    //OC中成员方法的调用使用[]来调用
    [person2 func];
}
return 0;

}

上一篇 下一篇

猜你喜欢

热点阅读