黑马程序员技术交流社区

标题: OC中的类和对象 [打印本页]

作者: 562413895@qq.co    时间: 2015-7-19 08:50
标题: OC中的类和对象
1、类:具有相似内部状态和运动规律的实体的集合。
对象:现实世界中各种各样的实体。
一个类可以实例化多个对象。
消息:指对象间相互联系和相互作用的方式。一个消息包括:发送消息的对象、接收消息的对象、消息传递方法、消息内容(参数)、反馈
OC中描述事物通过类的形式体现,类是多个t同类事物的抽象。
2、类的声明和实现
1)类的声明:.h文件用于类的声明,类的声明使用关键字:@interface和@end
声明一个类:@interface  类名:父类名
                      {   //定义类的属性  }
                         //类的行为
                      @end

例:   //声明车的类
          @interface  Car:NSObject
           {  
                 @public;//共有的类
                  //类的属性
                   int  Wheel;
                   NSString  *color;
                   int speed;
            }
                  //类的行为
            @end

2)类的实现:.m文件中英语实现.h中声明的类,类的实现用@implementation和@end。
实现一个类:@implementation  类名
                      //行为的具体实现
                      @end
例:@implementation  Car
         //行为的具体实现
        @end

3、方法
方法的声明和实现,都必须用 + 和 - 开头
+ 表示类方法(静态方法); - 表示对象方法(动态方法)。
注意:在.h中声明的所有方法作用域都是public类型。
4、对象的创建
例:[Car  new]; //分配内存空间;给类Car的每个成员初始化值;返回新申请空间的首地址。
       Car  *p=[Car  new];//定义了一个Car类型的指针变量指向新申请的内存空间;或者说实例化了一个Car类的实例对象p。
       p->Wheel=10; //创建一个Car类型的对象Wheel,其实质是指针,用指针间接访问实例变量值。
5、无参方法的声明与实现
1)、方法的声明
例:-(void) run; //无参无返回值的方法
       -(void) stop;
2)、方法的实现
例:-(void) run{
          NSLog(@"车在飞!");
}
3)、调用方法
例:int s=[p  run];//p是Car类的实例化对象,run是Car类的方法。
6、有参方法的声明与实现
1)、方法的声明
      一般形式:-(或者是+)(返回值类型)方法名:(参数类型)参数名;//有一个参数的方法
     -(或者是+)(返回值类型)方法名1:(参数类型1)参数名1  and (参数类型2)参数名2;//有2个参数的方法
   例:-(int) sum:(int)x  and  (int) y;//有参有返回值的方法的声明
2)、方法的实现
例:-(int) sum:(int)x  and  (int) y{
          return x+y;
           }//此方法是对象方法(-),此方法名是:sum:  and:  (冒号是方法名的一部分)
3)、调用方法
       例:int s=[类的对象名  sum:3  and :4};//3传给x,4传给y。

例://实现苹果手机
#import <Foundation/Foundation.h>
enum  color{kColorWhite,kColorBlack,kColorTHJ }  iColor;
//iphone类的声明
@interface  iPhone:NSObject
{
          //类的属性(实例变量、成员变量)
       @public
        iColor  _color;
        float  _size;
        NSString  *_cpu;
}
          //类的行为(方法的声明)
//查看收集的信息,实质是把手机的实例变量值打印出来
-(void)aboutMyPhone;
//打电话,需要一个参数,参数就是电话号码(字符串)
-(void)callPhone:(NSString *) telNum;
//发短信,给指定号码发送短信,短信的内容可以指定
-(void)sendMessage:(NSString  *)telNum  andContent:(NSString  *) content;
@end

//iPhone 类的实现
@implementation  iPhone
//查看收集的信息,实质是把手机的实例变量值打印出来
-(void)aboutMyPhone{
NSLog(@"颜色:%d,尺寸:%.2f,cup:%@",_color,_size,_cup);
}
//打电话,需要一个参数,参数就是电话号码(字符串)
-(void)callPhone:(NSString *) telNum{
NSLog(@"给%@打电话",telNum);
}
//发短信,给指定号码发送短信,短信的内容可以指定
-(void)sendMessage:(NSString  *)telNum  andContent:(NSString  *) content{
NSLog(@"给%@发送短信,短信内容:%@.",telNum,content);
}
@end
//主函数
int  main(int  argc,const  char  *argv[])
{
      @autoreleasepool{
        //创建对象iPhone6Plus
            iPhone  *iPhone6Plus=[iPhone new];
       //设定手机的信息
         iPhone6Plus ->-color=kColorWhite;
         iPhone6Plus->_cup=@"A10";
        iPhone6Plus ->_size=6.0f;
        //调用方法
         [iPhone6Plus aboutMyPhone];
           [iPhone6Plus callPhone:@"10086"];
            [iPhone6Plus  sendMessage:@"10086" andContent:@"君爱颖一万年"];
       }
       return  0;
}


作者: 562413895@qq.co    时间: 2015-7-19 09:11
自我感觉总结得不错
作者: 执笔梦    时间: 2015-7-19 12:28
挺长时间 没来咯,水一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2