Objective-C 面向对象
来源:互联网 发布:monaco 字体 windows 编辑:程序博客网 时间:2024/06/03 17:08
29.self和super
OC提供两个保留字self和super,用于在方法定义中引用执行该方法的对象。
OC语言中的self,就相当于C++、Java中的this指针。
super发送消息可以将方法实现分发其父类。可以重写一个已有的方法来修改或将它添加到现有的方法中,仍然可以将原始的方法纳入到修改后的方法当中。
①self的应用场景
1)用在类方法中;
2)用在对象方法中;
3)访问成员变量;
4)self在OC的内存管理特殊使用;
self在对象方法中使用,调用的是当前对象方法的那个对象
self在类方法中使用,调用的一定不是当前创建的对象,而是类对象。
[p class]返回的实质就是当前类(类对象)。
self = 该类
②总结:
1)谁调用当前方法,self就代表谁;
2)self在对象方法中,self代表当前对象;
3)self在类方法中,self代表类;
4)[self 方法名称]; //调用其他方法(类方法、对象方法)
5)self可以简单理解为指自己;
30.继承
派生类方法属性 = 基类方法属性 + 派生类自己新增的方法和属性
①注意:
1)基类的私有属性不能被继承,不能被使用;
2)OC中的继承是单继承:也就是说一个类只能一个父类,不能继承多个父类;
3)继承的合理性;
4)子类不能定义和父类同名的变量,但是可以继承父类的变量;
5)OC支持单一继承,不支持多继承;
6)OC支持多层继承;
7)子类可以继承父类所有的实例变量的属性和方法,但是,不是所有的都能访问!
8)在@interface和@end之间默认的修饰符是@protected
②继承体系中方法调用的顺序
1)在自己类找;
2)若没有,在父类中找;
3)若父类也没有,就去父类的父类找;
4)....一直向上层找,直到找到基类(NSObject);
5)如果NSObject都没有就报错了
31.重写
把父类的方法,在子类中重新给实现了,这种做法就称之为:方法的重写。
32.实例变量修饰符
① @public(公开的):在有对象的前提下,任何地方都可以直接访问
② @protected(受保护的):只能在当前类和子类的对象中使用
③ @private(私有的):只能在当前类的对象中使用
④ @package(框架级别的):作用域介于私有和公开之间,只要处于同一个框架中都可以直接通过变量名访问
33.OC中的私有方法
在.h中没有声明,在.m中实现,此时该方法被成为私有方法。不能在其他类中访问。
34.description
description方法是基类NSObject所带的方法,因为其默认实现时返回类名和对象的内存地址。
但是,我们经常会重写description,覆盖description的默认实现。
有两种重写description一种时实例方法,一种是类方法
例如:
//重写
-(NSString *) description{
return [NSString stringWithFormat:@"数组1:%d,数字2:%d,结果:%.2f",_num1,_num2,_result];
}
//调用:
NSLog(@"%@",cal);
35.多态
多态就是某一类事物的多种形态。
①程序中的多态:不同的对象以自己的方式响应相同名称方法的能力成为多态;
②多态的条件
1)有继承关系、有方法重写;
2)父类的声明变量指向子类对象;
③多态的优点
多态的主要好处就是简化了编程接口,它容许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数命名一个新名字。这样,编程借口就是一些抽象的行为的集合,从而和实现接口的类的区分开来。
36.类的本质
①
②获取类对象
//通过类名获取类对象
Class c1 = [Person Class];
//通过实例对象来获取类对象
Person *p1 = [Person new];
Class c2 = [p1 Class];
37.SEL
SEL:全称为selector,表示方法的存储位置。
Person *p2 = [Person new];
[p2 test];
//手动地把test方法包装成SEL类型
SEL s2 = @selector(test);
[p2 performSelector:s2]; //等同于[p2 test];
- Objective C面向对象
- objective-c面向对象
- Objective-C 面向对象
- Objective-C语言:面向对象
- Objective-C:面向对象程序设计
- [objective-c] 面向对象1
- 【Objective-C】01-面向对象
- 【Objective-C】面向对象前奏
- Objective-C 面向对象基础
- Objective-C(一)面向对象
- Objective-c中的面向对象
- Objective-C 面向对象一
- Objective-C浅谈面向对象
- Objective-C面向对象浅谈
- Objective-C面向对象-Objective-C 对象,实例和方法
- Objective-C面向对象编程基础知识
- 基于Objective-C的面向对象编程
- Objective-C 面向对象初体验
- 关于项目中出现一些非代码造成的错误
- 查找第 k 大的元素
- JS+jQuery+Easyui实现动态添加控件及赋值
- Visual Studio Attach Progress Debug
- expect的命令行参数
- Objective-C 面向对象
- HDU 5427 A problem of sorting(字符串处理+排序)——BestCoder Round #54(div.2)
- POJ 3252 Round Numbers (数位dp)
- 相机模型与标定(一)--相机标定概述
- BC - The Factor(模拟题 + 素数)
- 编程之路-编程语言知识点纲要
- 两个字符串中最大相同的子串
- 虚拟机11启动不了
- Cv运动分析与对象跟踪(续)