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的
- 实例变量修饰符作用域:
从出现的位置开始, 一直到下一个修饰符出现
如果没有遇到下一个实例变量修饰符, 那么就会修饰后面所有的实例变量