------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
继续上一篇博文回顾了OC中封装的相关知识后,这次我继续复习了OC面向对象思想的三大特性之一,继承的相关知识。
同样需要说明由于之前学习过Java的原因,所以对面向对象的封装这个特性算是比较,可能博文梳理的不是太透彻。
若是没有接触过编程语言的话,可能对待这块新知识,会有自己梳理的比较系统的笔记吧。
以下开始正题:
继承,顾名思义是可以将父类的属性和方法继承给子类,从而减少大量的重复代码和工作量。在这一概念上OC和Java保持了一致。
下面是一段代码说明:
最好从实际角度出发,首先我抽象出一个电脑类作为父类:
#import <Foundation/Foundation.h>
#pragma mark 电脑类
@interface Computer : NSObject
{
float _Size; //屏幕尺寸
int _Price; //价格
float _weight; //重量
}
-(void)startup; //开机
-(void)show; //显示主机信息
-(void)shutdown; //关机
-(void)reboot; //重启
@end
#import <Foundation/Foundation.h>
#import "Computer.h"
#pragma mark 笔记本电脑类
@interface Laptop : Computer
{
float battery; //电池电量
}
-(void)showBattery; //显示电量
@end
这时,虽然看似笔记本电脑类中,并没有电脑类中的任何属性和方法。
但是若我们实例化一个Laptop对象,并调用开机方法。这时可以发现Laptop实例的对象成功执行了开机方法。
而这种直接继承父类方法,不需要书写任何额外代码的方式,我就将它理解为面向对象的一大特性——继承。
那么接下来就有一些问题了,我们知道大部分情况下,由于笔记本轻便快捷的特性,他的开机过程会非常快,这时我们再使用从电脑上继承过来的开机方法就不合适了。
这时我们可以将父类的开机方法,复制到Laptop类中并在Laptop类的实现中进行针对性的编码。这叫做方法的重写。
那么关于继承的相关知识就先整理到这,下一篇中的多态才是面向对象中真正的主角哦,拭目以待吧。