一、概念
/*
>>>1. 如何编写类的声明
以@interface开头,以@end结束,然后在class name 对应的地方写上 事物名称,也就是类名即可
注意 : 类名的首字符必须大写
声明一个类的目的就是为了告诉系统,我们这个类中有哪些属性 和行为
CO类声明中 属性只能写在@interface 和 @end之前的{}中
注意 : 编写OC类属性的时,建议将所有属性的名称前面加上 _ (iOS规范)
类名后面的 : NSObject 是为了让我们的iPhone类具有创建对象的能力
>>>2. 如何编写类的实现
以@implementtation开头, 以@end结尾,然后在class对应的地方 写上声明时 声明的类的名称, 必须利用声明的类名,一模一样
>>>3.如何通过一个类 创建一个对象
在OC中想要通过一个类来创建一个对象,必须给类发送一个消息(好比C语言中调用方法一样)
如何发送消息? 在OC中只要想要 发送消息就先写上 [类名称/对象名称 方法名称];
发送 什么消息(调用方法)可以创建一个对象呢? new
>>>4,只要通过一个类调用类的new方法,也就是给类 发送一个叫new的消息之后
系统内部 就会做3件事情
1.为 Iphone 类 创建出来的对象分配存储空间
2. 初始化 iPhone 类创建出来的对象中的属性
3. 返回 iPhone类 创建出来的对象 对应的地址 (指针)
>>>4.类的对象的概念
通过 一个iPhone类型的指针 接受了 iPhone对象的地址
如果使用给一个指针保存了某一个对象的地址,那么我们就称这个指针为 某个类的对象
利用 iPhone类型的指针 保存了 iPhone对象的地址, 那么我们就称之为 iPhone类型的指针 (p)称之为 iPhone对象
*/
二、代码
#import <Foundation/Foundation.h>
#pragma mark 类
/*
事物名称:iPhone
属性:颜色,型号,cpu,尺寸 == 成员变量
行为:打电话,发短信,上网 == 成员方法
C语言中函数分为声明和实现
OC中定义一个类也分为声明和实现,也就是说以后我们OC中定义类,就是写在类的声明和实现
*/
#pragma mark 1. 如何编写类的声明
// 以@interface开头,以@end结束,然后在class name 对应的地方写上 事物名称,也就是类名即可
// 注意 : 类名的首字符必须大写
// 声明一个类的目的就是为了告诉系统,我们这个类中有哪些属性 和行为
// CO类声明中 属性只能写在@interface 和 @end之前的{}中
// 注意 : 编写OC类属性的时,建议将所有属性的名称前面加上 _ (iOS规范)
// 类名后面的 : NSObject 是为了让我们的iPhone类具有创建对象的能力
@interface IPhone : NSObject
{
// 默认情况下 : OC对象中的属性 是不能直接访问的
@public // 只要让类中的属性公开, 以后就可以直接通过 一个指向结构体的指针 来操作对象中的属性
float _model; // 型号 0
int _cpu; // cpu 0
double _size; // 尺寸 0
int _color; // 颜色 0
}
// 行为
@end
#pragma mark 2. 如何编写类的实现
/*
以@implementtation开头, 以@end结尾,然后在class对应的地方 写上声明时 声明的类的名称, 必须利用声明的类名,一模一样
*/
@implementation IPhone
// 行为的实现
@end
#pragma mark main函数
int main(int argc, const char * argv[])
{
// 如何通过一个类 创建一个对象
// 在OC中想要通过一个类来创建一个对象,必须给类发送一个消息(好比C语言中调用方法一样)
// 如何发送消息? 在OC中只要想要 发送消息就先写上 [类名称/对象名称 方法名称];
// 发送 什么消息(调用方法)可以创建一个对象呢? new
/*
只要通过一个类调用类的new方法,也就是给类 发送一个叫new的消息之后
系统内部 就会做3件事情
1.为 Iphone 类 创建出来的对象分配存储空间
2. 初始化 iPhone 类创建出来的对象中的属性
3. 返回 iPhone类 创建出来的对象 对应的地址 (指针)
*/
// 通过 一个iPhone类型的指针 接受了 iPhone对象的地址
// 如果使用给一个指针保存了某一个对象的地址,那么我们就称这个指针为 某个类的对象
// 利用 iPhone类型的指针 保存了 iPhone对象的地址, 那么我们就称之为 iPhone类型的指针 (p)称之为 iPhone对象
IPhone *p = [IPhone new];
p->_model = 4; // instance variable "_model" is protected
p->_size = 3.5;
p->_color = 0;
p->_cpu = 1;
NSLog(@"model = %f, size = %f,color = %i,cpu = %i",p->_model, p->_size,p->_color,p->_cpu );
// OC中的类 其实本质就是一个结构体,所以p这个指针 其实就是指向了一个结构体
/*
struct Person
{
int age;
char *name;
};
struct Person sp = {25,"lyh"};
struct Person *sip = &sp;
// (*sip).age = 22;
// (*sip).name= "lyhx";
sip->age = 22;
sip->name = "lyhxx";
*/
// 什么是 用于保存地址的 ? 地址
/*
int num;
num = 0;
int *p = #
*/
return 0;
}