非凡程序员:闵莉萍
一. 面向对象的三大特性 + 复合
封装
. 三种方法:
(1)有接口,有实现:自己可以用,外部可以用;
(2)有接口,没实现:报警告;
(3)没接口,有实现:自己类可用,其他类和主文件都不能用,不暴露接口,自己类用self调用。
@public 属性 公开:用 -> 赋值
、方法的封装 :不暴露接口名;这是只能在自己类
中用 [ self 方法名]; 这种方式调用
@protected 这都是对属性的set、get 方法进行限制
@private 子类中有父类权限,但不可在设置重写父类的set、get 方法
@package
2.继承
特点:可重性强、维护性强、减少代码量、去冗余。子类中重写父类方法时,不写接口。
.只有有继承的时候才用多态.
.继承:子类继承父类的属性和有接口的方法
子类有独有的属性方法(父类、兄弟类不受影响)
子类应用并重写父类方法用 [super 方法名];
子类可以指向父类,不能调用子类独有的属性和方法,只能调用父类方法。
指向子类对象的父类指针,方法调度时候先在子类找,子类没有找父类。
3.多态(多种形态):基于继承(子类、父类)、父类指针指向子类。
核心:父类指针指向子类
父类指针指向子类 能调用重写的方法,但是不能调用子类特有的方法。
4. 实例化对象(对于 Person 类)
调用方法 [Person new] 、 [[Person alloc]init] 。
new 相当于 alloc+init 、 alloc:划分一块内存
init: 生成对象
实例化方法:
Person * jack = [Person alloc];//alloc只是划分一块内
存,没有实际生成相关对象
Person * ximi = [[Person alloc] init];//init后才实际生成相应对象
5.类和对象的比较
类 对象
符号 + —
调用对象 类 对象
成员变量 不可用 可用
6.self(当前自己(类/对象))、super(父(类/对象))
两个词都是oc关键字,都属于指针。
self:当方法不暴露接口,在自己类内部调用
super(超父类)继承重写方法(同时使用父类)
7.重写方法:在父类的基础上实现自己,用super调用原有的
方法。
重写方法的子类中方法名与父类中相同,有参数时,参数名可以不同。
8.构造函数:
实例化方法的重写
-(id)init{
self = [super init];//super调用原本的init方法返回实例化的对
象self,self就是Person类的对象
[self setAge:1];
return self;
9.复合 不是面向对象的特性之一,只是类与类之间的一种形式,
将多个组件组合在一起,配合使用从而得出一个新的组件。
二. 数据类型
NSRange 结构体的一种,{位置,长度}
一.字符串类型
1.不可变字符串(NSString)
对象输出用 %@ 做通配符。
(1)定义不可变字符串方法:
※ a. NSString * string = @“hello”;
b. initWithFormat 是生成对象同时存放数据的方法,如下
NSString * string = [[ NSString alloc ] initWithFormat : @“ooo%i”,234 ];
※(2) 拼接字符串法、类方法、返回新的字符串:( stringWithFormat )
NSString * stringII = [ NSString stringWithFormat:@"ooo%i",123 ];
(3)length 是字符串的属性,可以通过方法length获得某字符串长
度 [string length] 或者直接用 点 获取属性 string.length。
length的返回值为NSUIntger(无符号长整型)通配符使用 %lu 。
(4)所有字符,除图标是两个长度外都是一个长度。
2.可变字符串 (NSMuatbleString)
(1)定义可变字符串的方法
※ a. 静态定义一个可变字符串:
NSMutableString * mutStr = [ NSMutableString string ];
※ b. 定义一个字符串并且分配一个空间
(分配空间:initWithCapacity: )
NSMutableString * mutStr = [ [ NSMutableString alloc ]initWithCapacity:10 ] ;
c. 定义一个字符串并且分配一个空间的另一种方法
NSMutableString * mutStr= [ NSMutableString stringWithCapacity:10 ];
d. 定义一个可变字符串并赋初值或者 将一个不可变字符串格式化为
一个可变的(三种至少必会一种)
NSMutableString * mutStr= [[ NSMutableString alloc ]initWithFormat:@“hl%@“,@“wo"];
NSMutableString *mutStr = [ NSMutableString stringWithFormat:@"hello" ];
NSMutableString * mutstr = [ NSMutableString stringWithString:@"hh" ];
(2) 字符串的增加或减少
a. 对于不可变的字符串是不能自身增加(减少),只能增加成一个新的字符串。
b. 从指定下标裁剪到结束 (substringFromIndex: )
NSString * subStr = [ string substringFromIndex:1 ];
c. 从下标为0处裁剪到某位置 (substringWithRange:NSMakeRange(a, b))
NSString * subRange = [ string substringWithRange:NSMakeRange(2, 2) ];
d. 在原本字符串后拼接格式化的字符串,返回新字符串(原字符串不影响)(stringByAppendingFormat:)
NSString * appStr = [ string stringByAppendingFormat:@" world%@",@"你好" ];
e、利用在字符串后添加字符串方法得到新字符串 (stringByAPPendingString:)
NSString * append = [string stringByAppendingString:@"hjk" ];
f、在字符串后追加字符串(appendString)
[ muStr appendString:@"你好" ];
g、在字符串后追加被格式化为字符串的自定义内容(appendFormat: )
[ muStr appendFormat:@"hi%i",123 ];
h、在指定位置追加内容 (insertString: 字符 atIndex:位置数 )
[ muStr insertString:@"haha" atIndex:2 ];
减少
i、在指定位置删除内容( deleteCharactersInRange:NSMakeRange(0, 1) )
[ muStr deleteCharactersInRange:NSMakeRange(0, 1) ];
※ j、指定内容删除 i:查找某字符串的位置
NSRange range = [ muStringII rangeOfString:@"hi" ];
ii.删除找到的指定位置
[ muStr deleteCharactersInRange: range ];
(3)修改字符串,将指定位置替换为指定字符串
a. [ muStringII replaceCharactersInRange:NSMakeRange(0,2) withString:@"h" ];
(即字符串 0 到 2 之间的位置换成 h(包括 0 位置) )
(4) NSInteger 为 : OC的长整型
(5)将数字内容的字符串转化类型为相应数值
(intValue \ integerValue \ floatValue \ doubleValue \ boolValue)
例: NSString * numStr;
NSInteger number = [ numStr integerValue ];
//将字符型(numStr)转化为整形(number)
(6)字母大小写的改写
a、全部改为大写 (uppercaseString)
NSString * upperStr = [ string uppercaseString ];
b、全部改为小写 (lowercaseString)
NSString * lowerStr = [ upperStr lowercaseString ];
c、 首字母大写 ( capitalizedString )
NSString * capStr = [ string capitalizedString ];
转载于:https://my.oschina.net/u/2615753/blog/608621
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
