01.类和对象

原创
2018/06/19 17:34
阅读数 2

主函数详解

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);
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部