OC 初识NSString,self关键字,继承,成员变量的可见性,description方法
OC 初识NSString,self关键字,继承,成员变量的可见性,description方法
初识 NSString:
char * string = “旭宝爱吃鱼”; 常量字符串存储在静态区
NSString * string = “旭宝爱吃鱼”; OC对象存储在堆区
创建NSString对象:
1、用字面量来创建
NSString * string = @"旭宝爱吃鱼";
2、通过类方法创建NSString对象
NSString * format = [NSString stringWithFormat:@"qq %g qq",1.1];
注意:stringWithFormat NSLog里面的占位符是通用的
3、new不适用NSString
NSString * new = [NSString new];
4、+alloc -init创建NSString对象
NSString * initString = [[NSString alloc] initWithFormat:@"%@ 旭宝爱吃鱼",1];
5、将一个C语言字符串,转化成OC对象
NSString * charString = [[NSString alloc] initWithUTF8String:"旭宝爱吃鱼"];
self关键字:
- self是一个指针,在每一个方法中都有一个self指针
- self可以出现在所有的方法中(对象方法和类方法)
- self指向调用者。(谁调用它就指向谁)
- 可以使用self->成员变量 访问成员变量,可以使用[self 方法名]调用方法
继承:
继承:子类拥有父类的所有属性,和方法。
继承的好处:抽取出了重复的代码,减少代码冗余.
继承的缺点:耦合性太强.
继承的使用注意:
- OC中不允许子类和父类拥有相同名称的成员变量名;
- OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果没有则一层一层的往上找;
- 在子类中重写父类的方法,会覆盖父类的方法。
super关键字:
super关键字,在子类中重写方法时,可以让调用者跳过这一层而调用父类中的方法。
使用场景:子类在重写父类方法时,想要保留父类的一些行为。
成员变量的可见性:
- @public 公有成员:成员变量可以在本类,子类,外部函数中访问。
- @protected 受保护成员:成员变量可以在本类,子类,但不能在外部函数访问。如果成员变量没有任何修饰词,默认是protected
- @private 私有成员:成员变量可以在本类中访问,不能在子类,和外部函数访问。
注意:在类实现下定义的所有成员变量的可见度,都是@private
description方法:
-description方法的默认实现是返回类名和对象的内存地址,这样的话,使用NSLog输出OC对象,意义就不是很大,因为我们并不关心对象的内存地址,比较关心的是对象内部的一些成变量的值。因此,会经常重写-description方法,覆盖-description方法的默认实现。
比如:
- (NSString *)description {
NSString * string = [NSString stringWithFormat:@"name = %@ age = %d",_name,_age];
return string;
}