您的位置:首页 > 职场人生

黑马程序员-ios学习笔记 oc 类和对象

2015-07-26 04:52 405 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

oc的类和对象

一、类和对象的定义

 1、类(class):是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。

       类的内部状态:指类集合中对象的共同状态。

       类的运动规律:指类集合中对象的共同运动规律。

       类概念的两种方法:1、由特殊到一般的归纳法

                                        如:车、船、飞机,都可以把人从a点带到b点,所以都为交通工具。

                                        2、由一般到特殊的演绎法

                                        如:车—>小车、汽车、货车,根据不同的特征分成不同的小类

2、对象(object):即现实社会中各种各样的实体,可以是具体的事物,也可以是抽象的事物。

       如:猫、桌、椅、1、2、3、法律、法规等。

      对象的属性:即对象的内部状态;如:猫有名字、颜色、体重等内部状态

      对象的方法(事件):即对象的运动规律;如:猫有吃饭、睡觉、抓老鼠等的运动规律

3、类和对象之间的关系

      类(class):是具有相同类型的对象的抽象;定义一个类就可以创键这个类的多个对象

      对象(object):是类类型的变量;是系统中基本运动的实体;

      类(class)的构成:类的名称:类名

                                       类的属性:一组包含数据的属性

                                       类的方法:允许对属性中包含的数据进行操作的方法

二、类的声明和实现

1、类的声明文件:后缀为.h的文件,用于声明成员变量、方法。使用关键字:@interface和@end。

                           注:.h中的方法只是做一个声明,并不对方法进行实现。

   声明一个类:@interface NewClass:ParentClassName

                          {    实例变量;

                            } 

                               方法的声明;

                         @end

例:

[objc] view
plaincopy

@interface Tree : NSObject  //定义一个树的类  

{  NSString *_name;         //定义树名变量  

   int _age;                //定义树的年龄  

}  

+(NSString *)name;          //类方法的声明  

-(int)age;                  //对象方法的声明  

-(void)setName:(NSString*)name setAge:(int)age;//有参方法声明  

@end  

   类的实现文件:后缀为.m的文件,用于实现.h中声明的方法。使用关键字:@implementaion和        @end。

实现一个类:@implementaion NewClassName

                       方法的实现

                        {

                              代码;

                           }

                      @end

例:

[objc] view
plaincopy

@implementation Tree  //树这个类的实现  

+(NSString *)name{    //类方法的实现  

    return @"白杨树";}  

-(int)age{            //对象方法的实现  

     

    return _age;}  

-(void)setName:(NSString*)name setAge:(int)age{   //有参方法实现  

    _name=name;  

    _age=age;  

 }  

@end  

2、方法的声明和实现:都必须以+或者-开头。

    +表示类方法(静态方法)

     1)类方法以+开头;+(返回值类型)类方法名;如:+(void)car;

     2)类方法只能由类调用;

     3)类方法中不能访问实例变量(成员变量),因为类方法由类调用,并没有创建存储空间来存储       类中的成员变量;

     4)调用格式:[类名 类方法名];

     5)类方法的好处:不依赖于对象,执行效率更高;能用类方法解决的问题,尽量使用类方法;

     6)适用场合:当方法内部不需要使用到成员变量时,可以改为类方法。

    -表示对象方法(动态方法)

      1)对象方法以-开头;

         -(返回值类型)对象方法名;如:-(void)name;     

         -(返回值类型)方法名:(参数类型)参数名称    方法名:(参数类型)参数名称;

如:

[objc] view
plaincopy

-(void)setName:(NSString*)name setAge:(int)age;  

      2)对象方法只能由对象来调用;

      3)对象方法中可以访问当前对象的成员变量;

      4)调用格式:[对象名  对象方法名];

   在.h中声明的所有方法作用域者是public类型,不能更改。

3、成员变量(实例变量)

   成员变量常用作用域:@public全局都可以访问

                                       @protected只能在类内部和子类中访问

                                       @private只能在类内部访问

三、方法的调用

1、创建一个对象访问变量

      Tree *tree =[Tree new]; //Tree->类名

                                                 //tree->Tree类型的指针变量

                                                 //new->使用类名调用new方法

注:new在内存中做的三件事:1、开辟存储空间

                                                  2、初始成员变量

                                                  3、返回指针地址

2、方法调用的格式:

   1)[类名或者对象名   方法名];如:[tree  age];

   2)对象名.方法名

   3)[指针变量   方法名:实际参数  方法名:实际参数];

[objc] view
plaincopy

int main(int argc, const charchar * argv[]) {  

    @autoreleasepool {  

        Tree *tr=[Tree new];  //创建一个对象访问变量  

        [Tree name];          //调用类方法  

        [tr age];             //调用对象方法  

        [tr setName:@"桂花树" setAge:5];//有参方法调用  

        NSLog(@"树名:%@\t\t树龄:%d",[Tree name],[tr age]);  

    }  

    return 0;  



------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息