A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangyuxin 中级黑马   /  2016-3-9 23:49  /  802 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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中继承是单继承,只有一个直接的父类,一个父类可以有多个子类

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马