Ryan的OC学习总结-----3 继承与多态

一 继承概念

在定义一个新的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类型可以任何类型的对象,但不要滥用,如果能够确定对象数据类型的时候,要使用“静态类型”,“静态类型”在编译阶段检查错误,而不是在运行阶段。而且“静态类型”程序可读性好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值