supper、多态、成员变量(实例变量)修饰符

1.supper关键字

  • super是个编译器的指令符号,只是告诉编译器在执行的时候,去调谁的方法.
self是一个隐私参数;
self refers to the object receiving a message in objective-C programming.
super 并不是隐藏的参数,它只是一个“编译器指示符”,它和 self 指向的是相同的消息接收者
super is a flag that tells the compiler to search for the method implementation in a very different place. It begins in the superclass of the class that defines the method where super appears.
  • supper的使用
    • 直接调用父类中的某个方法
    • super在对象方法中,那么就会调用父类的对象方法,super在类方法中,那么就会调用父类的类方法
  • 使用场合:
    • 子类重写父类的方法时想保留父类的一些行为

2.多态

  • 概念:多态就是某一类事物的多种形态
  • 多态的条件
    • 有继承关系
    • 子类重写父类方法
    • 父类指针指向子类对象
  • 表现:当父类指针指向不同的对象的时候,通过父类指针调用被重写的方法的时候,会执行该指针所指向的那个对象的方法

3.成员变量修饰符

在.h中

@interface Person : NSObject
{
    @public
    int _age;
    @private
    NSString *_name;
    @protected
    double _height;
    @package 
    float _score;
}
@end
  • @public

可以在其它类中访问被public修饰的成员变量
也可以在本类中访问被public修饰的成员变量
可以在子类中访问父类中被public修饰的成员变量

  • @private

不可以在其它类中访问被private修饰的成员变量
可以在本类中访问被private修饰的成员变量
不可以在子类中访问父类中被private修饰的成员变量

  • @protected

不可以在其它类中访问被protected修饰的成员变量
可以在本类中访问被protected修饰的成员变量
可以在子类中访问父类中被protected修饰的成员变量

注意: 默认情况下所有的实例变量都是protected

  • @package

介于public和private之间的
如果是在其它包中访问那么就是private的
如果是在当前代码所在的包种访问就是public的

在.m中
成员变量是@private的

  • 实例变量修饰符作用域:
    从出现的位置开始, 一直到下一个修饰符出现
    如果没有遇到下一个实例变量修饰符, 那么就会修饰后面所有的实例变量
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • vue js
    懒羊羊3号阅读 5,068评论 0 1
  • 问题背景: 使用openstack dashboard 创建虚拟机时,有时创建虚拟机会出现如下错误 Error: ...
    Alecyrus阅读 1,838评论 0 2
  • 在对公司的rabbitmq组件实现自动化测试时,最终想要达到的效果是使用jenkins构建时填写需要测试的组件版本...
    菠了个萝阅读 6,016评论 0 0
  • 突然感觉,“都市异幻生物”为主题的短篇小故事可能会很有意思,于是就打算开一个新系列,取名为《幻都》——当然,这也就...
    LostAbaddon阅读 898评论 16 4