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

  1. ------<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 plain copy
  1. @interface Tree : NSObject  //定义一个树的类  
  2. {  NSString *_name;         //定义树名变量  
  3.    int _age;                //定义树的年龄  
  4. }  
  5. +(NSString *)name;          //类方法的声明  
  6. -(int)age;                  //对象方法的声明  
  7. -(void)setName:(NSString*)name setAge:(int)age;//有参方法声明  
  8. @end  

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

实现一个类:@implementaion NewClassName

                       方法的实现

                        {

                              代码;

                           }

                      @end

例:

[objc]  view plain copy
  1. @implementation Tree  //树这个类的实现  
  2. +(NSString *)name{    //类方法的实现  
  3.     return @"白杨树";}  
  4. -(int)age{            //对象方法的实现  
  5.      
  6.     return _age;}  
  7. -(void)setName:(NSString*)name setAge:(int)age{   //有参方法实现  
  8.     _name=name;  
  9.     _age=age;  
  10.  }  
  11. @end  

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

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

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

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

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

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

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

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


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

      1)对象方法以-开头;

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

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

如:

[objc]  view plain copy
  1. -(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 plain copy
  1. int main(int argc, const charchar * argv[]) {  
  2.     @autoreleasepool {  
  3.         Tree *tr=[Tree new];  //创建一个对象访问变量  
  4.         [Tree name];          //调用类方法  
  5.         [tr age];             //调用对象方法  
  6.         [tr setName:@"桂花树" setAge:5];//有参方法调用  
  7.         NSLog(@"树名:%@\t\t树龄:%d",[Tree name],[tr age]);  
  8.     }  
  9.     return 0;  

  1. ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值