oc中不允许方法的重载
oc没有严格的方法重载,再oc中,方法名不允许相同
比如:
- (void) test:(int)num1;
- (void) test:(float)num2;
这两个方法的对象名都是test,所以是不允许的
注意:名字要包括后面的冒号,所以再oc中的重载应该是指参数个数不同,但是返回类型后边的名字是可以相同的
或者是参数的个数不同,但是其标签不相同.
- (void) test:(int)intValue;
- (void) test:(float)floatValue;//错误,与第一个的方法重名了(test:)
- (void)test:(int)x andY:(int) y;
- (void)test:(int)x andY: (double) y;//错误,还是重名了 (test:andY:)
- (void)test:(int x) :(double)y;//正确,名字不同(test::)
oc中的static的用法和c语言的用法不相同:
再oc中:
1.static 不能修改实例变量
2. static 不能修饰方法
3 static 可以修饰全局变量,延长了局部变量的生命周期
self用在方法中去访问实例变量的话,如果是用在对象方法中,代表的是当前的对象
注意:
1 同事有对象方法和类方法存在的时候,self不会调错
OC复习第三天知识回顾
1> NSString类的介绍及计算NSString字符串的长度
NSString是Oc中处理字符串类之一. %@来打印
1. NSString *str = @“赵日天”; // 直接创建
2. NSString *str2 = [NSString new]; // 空字符串(了解, 后期几乎不用)
格式化字符串(拼接字符串)
3. NSString *str3 = [NSString stingWithFormat:@”打印的图片是%d和%f .jpg”, 5, 3.14];
[str length];
1. 纯英文
NSString *str = @“abc”; // 3
2. 纯中文
// UTF -8 国际通用编码 3 GB2312 国内标准2 GBK
NSString *str = @“圣诞快乐”; // 4
char *str = “圣诞快乐”; // 12
Xcode默认就是UTF-8的格式
2> 多文件开发
什么是多文件开发?
把功能不同的类放到不同的文件中
.h 类的声明文件 .m 类的实现文件
3> 类方法
1. 什么是类方法
对象方法:
- (返回值类型)方法名:(形参的类型)形参名;
2. 类方法定义
+ (返回值类型)方法名:(形参的类型)形参名;
3. 类方法的使用
调用:
对象方法:[对象名 方法名:实参]
类方法: [类名 方法名:实参]
4. 使用类方法的好处
1. 可以提高效率
2. 可以减少内存空间占用
3. 作为工具方法使用
缺点:不能访问对象的成员变量
5. 对象方法和类方法的对比
类方法 对象方法
+开头 - 开头
类名调用 对象调用
不能访问成员变量 可以访问成员变量
6. 类方法中可以调用对象方法 在对象方法中,可以直接调用类方法
1. 对象作为方法的参数传递过来
2. 在方法中通过创建对象,然后再调用
注意,在类方法中不能是用self调用对象方法,但是可以在对象方法中可以用self调用对象方法
4> 匿名对象的使用
匿名对象
创建了对象,但是没有指针去指向它
[Person new];
特点:每次使用都会重新申请一块内存空间
1. 可以访问成员变量
[Person new]-->_name = “张三”;
NSLog(@“%@”, [Person new]→name); // null
2. 可以调用方法
[[Person new] run];
3. 可以作为方法的参数
[p goHome:[Car new]];
5> 面向对象特性 封装
1. 什么是封装?
把复杂的数据隐藏,只提供操作数据或者方法的接口增加了子弹类
好处:
第一,可以隐藏数据
第二,隔离变化
第三, 保护数据的安全
2. 不封装有什么缺点?
它就不好管理自己的成员变量吧
3. 如何进行封装呢?
1.是读方法(getter),读取成员变量的值
规范:
1>一定是一个对象方法
2>一定有返回值,并且返回值类型和成员变量一致
3>方法名一定是 去掉下划线的成员变量名
4>一定没有参数
5>方法的实现中,一定是返回值成员变量值
2.是写方法setter方法, 给成员变量赋值
规范
1>一定没有返回值
2>一定是对象方法
3>方法名一定是set开头,格式:set + 去掉下滑线的成员变量名的首字母大写
4>一定有参数
5>参数的类型一定是和成员变量类型一致
6>形参的名称一般建议是去掉下划线的成员变量名
7>写方法的实现中,一定是给成员变量赋值
2 self不能调用自己,否则会造成死循环
类的继承和派生的概念/:
什么是继承?
有两个类 a类和b类,如果说a类继承了b类,就说a类拥有了b'类的所有属性和方法
继承者叫子类,也叫派生类
被继承的叫父类,也叫超类
再oc中继承是单继承,只有一个直接的父类,一个父类可以有多个子类
|
|