美文网首页
OC的属性&继承&多态

OC的属性&继承&多态

作者: 动感新势力fan | 来源:发表于2016-03-15 16:58 被阅读191次
    @protected: 受保护的,这个实例变量只能在该类和这个类的子类中被访问,(可以被子类继承)其他类无法访问。不写的情况下默认为这个属性。
    @private:私有的,这个实例变量只能再该类的中访问,其他类不能访问,包括它的子类继承同样无法访问
    @public:公有的,这实例变量谁都能访问。
    
    
    841337-11d38ff6bfaeabc8.png

    在花括号里面默认不写就是@private

    但是在正规的OC语法,你不能对一个类的方法定义为private

    屏幕快照 2016-03-15 12.45.13.png

    在.m文件中 用分类实现私有方法

    屏幕快照 2016-03-15 12.48.58.png

    总结:
    目前没看见protected的方法在oc中是怎样实现的

    因为有runtime 这个东西
    你想调用总是能调用到的
    oc最终会变成纯c,这就是没有真正private的原因。

    由于Objective-C的动态消息传递机制,OC中不存在真正意义上的私有方法。但是如果你不在.h文件中声明,只在.m文件中实现,或在.m文件的Class Extension里声明,那么基本上和私有方法差不多。

    将property定义到.m的Class Extension也基本上和私有变量差不多,同时也是私有方法

    继承

    父类中私有的成员变量,在子类中已经存在了,只是没有权限访问
    在子类中不可以定义与父类同名变量,哪怕这个变量在父类中是私有

    子类用super调用父类私有方法问题?
    super只是指定要调用的对象是父类,至于能不能调用还是看父类方法的修饰符。私有方法(private)只能当前类才能调用,子类无法访问。

    相关文章

      网友评论

          本文标题:OC的属性&继承&多态

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