类的三大特性

封装

  对于方法:

    1.需要给外部使用的属性和方法放在头文件里面

    2.自己私有的方法直接写在实现文件中

    3.私有的属性写在实现文件中匿名拓展

      @interface Person ()

        @property (nonatomic, strong) NSString *password;

      @end

  对于成员变量:(头文件中)

    1.@public  公有的 类自己可以访问,子类可以继承,外部也可以访问 访问方式 hr->name

    2.@private 私有的 类自己可以访问,子类无法继承,外部不可以访问

    3.@protected 受保护的 类自己可以访问, 子类可以继承, 外部不可以访问。默认。


继承

  当工程中或者系统框架里面已经存在某些类,需要在这些类的基础上添加一些方法或者属性,那么可以选择继承,*oc不可多继承

  1.术语

    父类:要被继承的类

    子类:自己定义准备继承于父类的类

    根类:所有类的父类

      @interface Animal(子) : NSObject(父)

    super:不是指向父类的指针,而是一个标识 

    self:代表当前调用者,隐藏属性

      

  2.类是自动向上装换的

  @interface Person : NSObject

    - (void)doSomething:(Father *)fa;

  @end

 

  Son *s = [[Son alloc] init];

  s.name = @"son";

  Person *p = [[Person alloc] init];

  [p doSomething:s];

  需要一个Father类型的参数,但是传递了一个Son类型的参数,自动进行了转换


 

多态

  同一个方法,拥有不同的实现

    1. 使用继承的方式实现多态

    2. 使用协议的方式来实现多态

       定义一个协议

        @protocol 协议名 <父协议>

          @required  必须实现

          @optional  选择实现

        @end

      使用一个协议

        @interface 类名 : 父类<协议名>

        @end

 

 

原文地址:https://www.cnblogs.com/huoran1120/p/5066174.html