第01天OC语言(06):第一个OC类

#####一、概念

/*
>>>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 = &num;
     */
    
    return 0;
}

转载于:https://my.oschina.net/u/3561184/blog/1272153

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值