20120808-课堂笔记 --继承、重载
来源:互联网 发布:java实现文件加密解密 编辑:程序博客网 时间:2024/05/02 05:01
1.继承的概念
2.继承的作用
- 可以通过继承,将所有重复的内容放在一起。
- 子类通过继承就可以获得超类的实例变量和方法。
3.继承语法
@interface 自定义类名 : NSObject
- 在cocoa中,尽量从NSObject或已继承NSObject的类继承。
- objective-c不支持多继承,但可通过其他特性,如分类和协议实现多继承的功能。
- 继承的内容包括:方法和实例变量。 一般只在对继承的方法重载时,才在子类对它声明。
- 继承之后不必再声明超类已有的实例变量,方法。
- 继承常用于扩展一个类
- 不能通过继承删除,减少方法,但可以利用重载来更改继承的定义。
- 不能通过继承减少方法或实例变量,只能添加。
- 分类机制允许以模块方式向现有的类定义添加新方法,尤其适用对没有源代码访问权限的类添加新定义时。
代码实例:
//定一个Shape类接口@interface Shape : NSObject //类名第一个字母要大写{ ShapeColor fillColor; ShapeRect bounds;}-(void)setFillColor:(ShapeColor)fillColor;-(void)setBounds:(ShapeRect)bounds;-(void)draw;@end//Shape//定义一个Circlr类@interface Circle : Shape //继承了Shape类的方法和变量,不必再声明。{ }//可以把函数写在这,但是需要重载@end//Circle//定义一个Rectangle类@interface Rectangle : Shape { }@end//Rectangle
4.类名,第一个字母要大写。
超类:所继承的类,又称父类。
子类:实施继承的类。
重写:改变方法的实现时,需要用到重写。
5.消息调度机制
- 当代码发送消息时,objective-c 的方法调度程序将在当前类中搜索相应的方法。
- 如果调度程序无法在接受消息的对象中找到相应的方法,它就在该对象的超类中进行查找。
6.
- NSObject 声明了一个名为isa的实例变量,该变量保存一个指向对象的类的指针。
- 每个方法都有一个名为self的隐藏参数,指向继承链中第一个类的第一个实例变量。
- 编译器使用基地址加偏移 查找实例变量的位置,对象的基地址指向第一个实例变量的首个字节在内存中的位置。
- isa对应类,self对应方法。
7.重写方法
- 添加全新的方法。
- 修改方法。
- 方法调度程序将使用重写的方法,而忽略超类的方法。重写的方法 优先级大于超类的原方法。
Q:提供某种重写方法时,若仍想调用超类的实现方法?
*---------------------------------------------------------------
|解决方法: super 关键字
|
|1.可以通过super 实现显示的调用超类方法,如下:
|
| [super setFillColor : c ];
|
|注意:此处不能写成 [Shape setFillColor : c]; 是实例方法,不是类方法。
|
|2.在子类中重写方法时,常显示的调用超类方法。
|
|3.向super发送消息时,objective-c 向该类的超类发送消息。如果超类中没有定义该消息,将按照通常的方式在继承中继续查找对应的消息。
|
*---------------------------------------------------------------
本课总结:
- 理解oop中继承的概念。
- 场我继承的语法规则。
- 理解objective-c的方法调度机制:无继承、有继承。
- 理解关键字super的作用。
- 掌握在重写方法中调用超类同名方法。
。函数不一定要定义在类中。如果类外的函数要访问类的数据成员,可以使用程序方法来访问。
- 20120808-课堂笔记 --继承、重载
- 构造器、方法重载、继承、方法重写、自动转型、多态课堂笔记
- 20120809-课堂笔记--复合
- Objective-C初接触 课堂笔记
- JAVA-继承,重载,覆盖,private,sbstract
- java--继承和构造方法重载(课堂)
- java第五节课堂笔记(继承)
- 20120810-课堂笔记--内存管理
- 20120810-课堂笔记--源文件的布局
- C++学习笔记4--静态属性 静态方法 虚方法 抽象方法 多态性 析构函数 运算符重载 多继承 虚继承
- 2017-8-24 java课堂笔记方法重载
- .Net学习笔记 - javascript方法重载
- 科锐课堂笔记:2017/4/18 类继承
- php开发笔记9-重写,重载,继承
- 重载课堂作业
- 20120810-课堂笔记--FoundationKit,NSRange,NSPoint,NSSize,NSRect,可变对象
- 如何打造高颜值PPT——小鱼儿何艳老师ppt课-课堂笔记
- javascript学习笔记(二)--继承
- Hibernate 映射类型
- PHP超时处理全面总结
- 语音基本常识
- 关于delphi对象存入Tlist中的使用
- 第一个裸奔程序——跑马灯
- 20120808-课堂笔记 --继承、重载
- 使用ILmerge合并Exe、Dll文件的帮助类
- 图形透明贴图
- win7下SendTo文件夹位置
- JPA多对多双向关联实例
- 运放稳定性连载9:单电源缓冲器电路的实际设计(2)
- 颜色透明例子
- 如何成为一个编程高手
- 透明立方体有一面没办法透明的解决OpenGL