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