黑马程序员——OC语言中的类和对象

来源:互联网 发布:数码印刷软件 编辑:程序博客网 时间:2024/05/01 07:40

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一、类和对象的设计

    1. 类的设计只关心三样东西:

    (1)事物名称(类名)(有意义)比如人:Person(类名的首字母必须大写,不能有下划线,多个单词时使用驼峰标识)

    (2)属性:身高(height),年龄(age)

    (3)行为(功能):跑(run),吃(eat)

    2. 具有相同(或者类似)属性和行为的对象都可以抽象出一个类

    3. 完整的一个类必须有类的声明和类的实现

    (1)类的声明      // 声明对象的属性(行为)

            @interface   类名  {属性}

            @end                      //类的声明完毕

    (2)类的实现

            @implementation  类名

            @end                     //类的实现完毕

    4. 利用一个类可以创建出对象,并且调用对象的某个方法,就可以让对象拥有一系列行为

    5. 方法与函数的区别

    (1)对象的行为(方法)声明放到@interface和@end 之间,但不能放{}里面,实现放@implementation和@end之间

    (2)对象方法归类和对象所有,都是以 - 开头,只能由对象调用

    (3)函数能写在文件的任意位置,函数归文件所有

    (5)函数调用不依赖于对象

    (6)函数内部不能直接通过成员变量名访问某个对象的成员变量

    6. 创建一个完整的车(Car)类

           #import  <Foundation/Foundation.h>         //因为使用了NSObject

               //类的声明      

           @interface   Car:NSObject      //   NSObject 的目的是让Car这个类具备创建对象的能力   

            {

                   @public           //可以让外部指针间接访问成员变量的值

                   int wheels       //轮子数    

                   int speed        //速度   (wheels,speed叫成员变量,也称实例变量,用来声明对象属性,默认初始化为0)

            }

          -(void)run      //方法的声明

            @end            

           //类的实现

            @implementation  Car

              -(void)run

            {

                   NSLog(@"%d个轮子,速度为%d的车子跑起来了",wheels,speed)   //方法的实现

            }

            @end                    

           int main()

          {

                 Car *c=[Car new];        //指针变量c指向Car 这个类创建出的新对象,存储的是地址

                 c->wheels=4;             //给c所指向对象的wheels属性赋值

                c->speed=250;              //给c所指向对象的speed 属性赋值

                   [c run]                        //给c所指向的对象发送一条run消息,指向-(void)run

                    return 0;

          }

*注意点:(1)不允许给成员变量赋初值

               (2)类的实现可以放main()后面,但类的声明必须放main()之前

二、对象的内存分析

   1. 类也占存储空间,在使用类创建对象之前,会把类加载进内存(只有一次)

   2. 类里面的放的是方法列表

   3. 每个对象内部默认都含有一个isa指针,指向类,所以,所有对象都共用一套方法

   4. OC 对象即使在函数被调用完之后也不会被回收

三、方法的声明和调用

   1. 不带参数的方法 

                              声明                                                          调用

                   

   2. 带一个参数的方法    

                                    声明                                                                    调用

                      

   3. 带多个参数的方法

                                         声明                                                                                     调用

            

   4. 方法名注意

    (1)冒号也是方法名的一部分

    (2)同一个类中不允许两个对象方法同名

四、匿名对象(没有名称的对象

      [Car new]->speed =300;         (不推荐这种写法)


0 0