Ryan的OC学习总结-----3 继承与多态
2016-06-24 10:38
316 查看
一 继承概念
在定义一个新的OC类时,只要用":"符号表明要继承的是哪一个类,就可以从中继承来许多东西,当新定义的类中还可以根据需要添加更多的变量和方法。新定义的类称为子类或派生类,被继承的类称为父类或者超类。
所有的类都是通过直接或者间接地继承NSObject类得到的。子类不能继承父类中作用域限定为@private的成员变量
注:在OC中,类的继承只能是单继承,而多继承可以通过遵从多个协议实现。也就是说,在OC中,一个类只能继承一个父类,但可以遵从多个协议。
二 方法重写
子类方法与父类方法名相同,子类就会重写或者覆盖(override)父类的方法。
三 多态概念
多态性是指在父类中定义的方法被子类继承后,可以具有不同的表现出行为。这使得同一个方法在父类及其各个子类中具有不同的变现行为。例如:几何图形类的绘图方法,在它的子类椭圆形和三角形中也会有绘图的方法,但是绘图方法功能都不同。
四 id类型
id是泛类型(generic data type),可以用来保存各种对象指针,使用id也就是使用“动态类型”
id figure;
figure = [[Ellipse alloc] init];
[figure onDraw];
figure = [[Triangle alloc] init];
[figure onDraw];
动态类型(Dynamic typing)就是指,对象实际使用的是哪一个类是在执行期间才确定的,而非在编译期间。
把Figure *改成id类型,程序运行结果没有任何影响。由于动态类型的关系,id在执行时,OC的执行环境会找出该id所代表的原来类型,所以根本没有所谓的转型。id并不是自动的转换成Elllipse和Triangle的父类,而是在执行期间,由执行环境辨认出id实际代表的类型为Ellipse和Triangle。
提示:虽然id类型可以任何类型的对象,但不要滥用,如果能够确定对象数据类型的时候,要使用“静态类型”,“静态类型”在编译阶段检查错误,而不是在运行阶段。而且“静态类型”程序可读性好。
在定义一个新的OC类时,只要用":"符号表明要继承的是哪一个类,就可以从中继承来许多东西,当新定义的类中还可以根据需要添加更多的变量和方法。新定义的类称为子类或派生类,被继承的类称为父类或者超类。
所有的类都是通过直接或者间接地继承NSObject类得到的。子类不能继承父类中作用域限定为@private的成员变量
注:在OC中,类的继承只能是单继承,而多继承可以通过遵从多个协议实现。也就是说,在OC中,一个类只能继承一个父类,但可以遵从多个协议。
二 方法重写
子类方法与父类方法名相同,子类就会重写或者覆盖(override)父类的方法。
三 多态概念
多态性是指在父类中定义的方法被子类继承后,可以具有不同的表现出行为。这使得同一个方法在父类及其各个子类中具有不同的变现行为。例如:几何图形类的绘图方法,在它的子类椭圆形和三角形中也会有绘图的方法,但是绘图方法功能都不同。
四 id类型
id是泛类型(generic data type),可以用来保存各种对象指针,使用id也就是使用“动态类型”
id figure;
figure = [[Ellipse alloc] init];
[figure onDraw];
figure = [[Triangle alloc] init];
[figure onDraw];
动态类型(Dynamic typing)就是指,对象实际使用的是哪一个类是在执行期间才确定的,而非在编译期间。
把Figure *改成id类型,程序运行结果没有任何影响。由于动态类型的关系,id在执行时,OC的执行环境会找出该id所代表的原来类型,所以根本没有所谓的转型。id并不是自动的转换成Elllipse和Triangle的父类,而是在执行期间,由执行环境辨认出id实际代表的类型为Ellipse和Triangle。
提示:虽然id类型可以任何类型的对象,但不要滥用,如果能够确定对象数据类型的时候,要使用“静态类型”,“静态类型”在编译阶段检查错误,而不是在运行阶段。而且“静态类型”程序可读性好。
相关文章推荐
- springmvc mock测试
- cordova
- GDT,GDTR,LDT,LDTR的学习
- 众数,java
- php 斐波那契数列:1 1 2 3 5 8 13 21 34 .....
- eclipse下使用动态库、静态库相应的配置
- 今天感触
- 6.IIs部署与发布
- 上传图片并浏览
- Android Gridview属性
- 获取Storyboard里面的单独控制器
- 反序进阶版,java
- 安卓支付相关
- android监听全局监听
- Java Socket编程 标准范例(多线程)
- unity调用Android剪切板基于Android studio
- IM聊实现客户端之间信息交互需求文档
- linux/eclipse/c++ 动态库的创立与调用
- 软件工程概论期末个人总结
- 删除重复数字,java