美文网首页
OC学习总结2 派生、重写和多态

OC学习总结2 派生、重写和多态

作者: Skipper_1_422 | 来源:发表于2016-08-24 17:38 被阅读0次
    1. 继承和派生
      继承是指一个新类拥有全部被继承类的属性和方法,通过继承产生新类的过程也称作派生。
      派生: 由子类创建的方法或者属性。子类除了继承之外的属性和方法。派生的目的是扩展、修改父类的功能。
      继承机制使得新类不仅有自己特有的属性和方法,而且有被继承类的全部属性和方法。
      说明:
      1)基类的私有属性能被继承,不能被使用。
      2)OC中的继承是单继承:也就是说一个类只能一个父类,不能继承多个父类

    2.实例变量的修饰符
    详细说明如下:
    1)@public (公开的)在有对象的前提下,任何地方都可以直接访问。
    2)@protected (受保护的)只能在当前类和子类的对象方法中访问 (默认访问权限)
    3)@private (私有的)只能在当前类的对象方法中才能直接访问
    4)@package (框架级别的)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通 过变量名访问

    3.方法的重写
    重写就是从父类继承的方法,不适用于子类时,可以直接声明父类的同名方法,并定义。 不用考虑父类中,方法已存在的问题。 重写后,子类可以通过super调用父类的方法。

    4.多态
    多态:父类的指针可以指向子类的对象,而子类的指针不能指向父类的对象。
    多态常与isKindOfClass、isMemberOfClass结合起来用

    多态的实现是通过子类重写父类方法,建立一个父类的对象用子类初始化。父类对象调用方法时将实现子类中重写的父类方法。

    #import <Foundation/Foundation.h>
    
    @interface Animal : NSObject
    
    - (void)barkWith:(NSString *)animalName;
    
    @end
    
    #import "Animal.h"
    
    @implementation Animal
    
    -(void) barkWith:(NSString *)animalName {
        NSLog(@"父类 %@ is barking",animalName);
    }
    
    @end
    
    #import "Animal.h"
    
    @interface Bull : Animal
    
    @end
    
    #import <Foundation/Foundation.h>
    #import "Animal.h"
    #import "Bull.h"
    #import "Sheep.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            // 多态: 父类的指针可以指向子类的对象,而子类的指针不能指向父类的对象
            // 多态常与isKindOfClass、isMemberOfClass结合起来用
            Animal * a = [[Bull alloc]init];
            [a barkWith:@"哞哞"];
            
            // 错误用法
    //        Bull * b = [[Animal alloc]init];
    //        [b barkWith:@"小牛"];
        
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:OC学习总结2 派生、重写和多态

          本文链接:https://www.haomeiwen.com/subject/kcdosttx.html