四.OC基础--1.文档安装和方法重载,2.self和super&static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&私有方法,6.description方法

四.OC基础--1.文档安装和方法重载,

  1. 在线安装
    xcode-> 系统偏好设置->DownLoads->Doucument->下载

  2. 离线安装
    百度xcode文档

  3. 方法重载: 是指在一个类中定义多个同名的方法
    在OC中没有重载

    四.OC基础--1.文档安装和方法重载,2.self和super&static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&私有方法,6.description方法

2.self和super&static,

  self和super:
    1. self理解: 谁调用当前方法, self就代表谁.
    比如: 在对象方法中,self代表的是对象, 因为只有对象才可以调用对象方法
    在类方法中, self代表的是类, 因为只有类名才可以调用类方法.

    注意: 在对象方法中不要使用self调用类方法
       在类方法中不要使用self调用对象方法

    2. 获取当前对象的类: Person *p = [Person p];
      [p class] = [Person class] = Person

    3. 在对象方法中可以通过 self->_speed访问成员变量.

    4. super代表的是当前类的父类.

  static关键字:
    1. 在c语言中 static可以修饰局部变量、全局变量、函数
    2. 在OC中, 不能用来修饰实例变量和方法, 但是可以修饰局部变量, 全局变量

3.继承和派生,

  继承格式:
    @interface Cat : Animal

    @end

  继承定义: 子类拥有了属性和方法.

  派生: 父类向下产生子类的过程称为派生

  继承的注意事项:
    1. 子类不能定义和父类同名的变量,但是可以继承父类的变量
    2. OC类支持单一继承,不支持多继承

    3.我们都知道objective C不能像C++一样支持多继承,但是在OC的使用经常会碰到需要使用多继承的情况。例如,ClassA中有methodA,ClassB中methodB,

     而现在需要使用这两个类中的方法。

    答案:通过协议可以实现oc中的多继承

4.实例变量修饰符 ,

  作用范围:
  @public : 作用于所有的类
  @protected: 作用于当前类,子类(派生类)
  @private: 作用于当前类
  @package: 作用框架级别的

  默认情况下实例变量属于@protected修饰.

5.私有变量&私有方法,

  定义格式:
    在.m文件当中定义
    @implementation Person : NSObject
    {
      int age; // 私有变量
    }

    // 不在.h文件中声明, 只在.m文件中实现
    -(void)run{

      NSLog(@"我是私有方法");
    }
    @end

    私有方法只能在当前文件中使用, 不能被子类继承.

6.description方法

  1. description方法默认返回对象的描述信息(默认实现是返回类名和对象的内存地址) ;

   Description方法包括类方法和对象方法。(NSObject类所包含)  

  2. 基本知识

      1)-description(对象方法)

        使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出。

      2)+description(类方法)

        使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@。

        使用@%打印对象如(“@%”,P)默认打印输出为<类名:内存地址>,虽然字符串也是对象,但字符串在使用@%打印时情况特殊。

   3.打印对象

         四.OC基础--1.文档安装和方法重载,2.self和super&static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&私有方法,6.description方法   

       那么应该怎么实现打印对象的所有属性呢?在类的实现中重写description方法。

   4.重写description方法,实现打印对象的所有属性

         四.OC基础--1.文档安装和方法重载,2.self和super&static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&私有方法,6.description方法

  5.区别

    +description方法决定了类对象的输出结果,即类本身

    -description方法决定了实例对象的输出结果,即Person创建的对象。

  6.打印补充

     四.OC基础--1.文档安装和方法重载,2.self和super&static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&私有方法,6.description方法    

         

  7. 千万不要在description方法中同时使用%@和self
    - (NSString *)description {
      return [NSString stringWithFormat:@"%@", self];
    }
  同时使用了%@和self,代表要调用self的description方法,因此最终会导致程序陷入死循环,循环调用description方法

上一篇:(转)JS中公共/私有变量和方法


下一篇:python基础-私有变量和方法