美文网首页
OC,类的三大特性之多态

OC,类的三大特性之多态

作者: 握青春 | 来源:发表于2016-11-23 13:39 被阅读0次

1. 多态

父类的指针指向子类的指针

不同的子类相应父类的行为

父类:打印机

#import

@interface Printer : NSObject

- (void) print;

@end

#import "Printer.h"

@implementation Printer

- (void)print{

NSLog(@"打印机打印纸张");

}

@end

子类:黑白打印机

#import "BlackPrinter.h"

@implementation BlackPrinter

- (void)print{

NSLog(@"黑白打印机");

}

@end

子类:彩色打印机

#import "Printer.h"

@interface ColorPrinter : Printer  //修改父类的打印行为

- (void)print;

@end

#import "ColorPrinter.h"

@implementation ColorPrinter

- (void)print{

NSLog(@"彩色打印机");

}

@end

定义一个person类,来操作打印机

#import "Person.h"

@implementation Person

// - (void) printWithColor:(ColorPrinter *)colorPrint{

// [colorPrint print];

 // }

// - (void) printWithBlack:(BlackPrinter *)blackPrint{

// [blackPrint print];

// }

- (void) doPrint:(Printer *)printer{

[printer print];

}

@end

[person printWithBlack:blackPrint];//调用黑白打印机

[person printWithColor:colorPrint];//调用彩色打印机

这种的设计,缺点在于:如果添加的子类特别多,就要在.h的文件里声明很多方法

- (void) doPrint:(Printer *)printer{

[printer print];

}

这里就到了关键点,这个方法传的参数是父类,而实际传的是子类型

Printer *p1 = [[BlackPrinter alloc]init];

Printer *p2 = [[ColorPrinter alloc]init];

[person doPrint: p1]; 

[person doPrint: p2]; 

// 父类的指针调用子类对象的方法,先在子类里去找,找不到就实现父类的方法

注意:子类不能增加父类没有的方法, 也就是父类方法和子类要一一对应

相关文章

  • iOS 语言三大特性

    封装 、 继承、多态OC学习篇之---类的三大特性(封装,继承,多态) - Android应用安全防护和逆向分析-...

  • Objective-C day2初始化方法 (17-7-27)

    继承 面向对象三大特性:封装 继承 多态。 继承的特点:没有父类的类称为根类,OC中的根类是NSObject(祖宗...

  • iOS 开发 OC基础篇之类的特性

    OC是面向对象的语言,面向对象程序设计中的类有三大特性:继承,封装,多态 。 封装: OC中的类也有权限控制的功能...

  • O-C02

    setter和getter方法: 面对对象的三大特性:封装、继承、多态 没有父类的类成为根类,OC中的根类是NSO...

  • GeekBand-OC继承与多态

    面向对象三大特性:封装、继承、多态面向对象三大特性 继承 在OC中,继承为单继承。即每个类只能有一个父类,子类自动...

  • 面试总结

    OC的理解与特性 . OC是一门面向对象的语言,三大特性:封装 继承 多态。静态语言特性(C++),动态语言的效率...

  • OC的简单总结

    一.OC的三大特性 封装、继承、多态 1> 什么是多态 多态:不同对象以自己的方式响应相同的消息的能力叫做多态。 ...

  • ios基础知识MS2

    OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性...

  • 知识点总结1

    OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性...

  • 笔记《知识梳理》

    OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性...

网友评论

      本文标题:OC,类的三大特性之多态

      本文链接:https://www.haomeiwen.com/subject/httvpttx.html