OC -- 多态

作者: J_coco | 来源:发表于2016-01-21 15:10 被阅读0次

多态:同一种类型 具有多种的表现形态

多态的条件:
必须存在继承关系
子类重写父类的方法
❗️父类声明的变量指向子类对象
(父类声明子类对象)

创建父类:Printer
创建子类:BlackPrinter 、ColorPrinter 、 OtherPrinter 继承Printer

Printer.h

#import <Foundation/Foundation.h>
@interface Printer : NSObject

- (void)print;
- (void)doPrint:(Printer *)printer;

@end

Printer.m

#import "Printer.h"
@implementation Printer

//使用打印机
- (void)doPrint :(Printer *)printer
{
  [printer print];
}

- (void)print
{
  NSLog(@"打印机  打印...");
}

@end

BlackPrinter.m

#import "BlackPrinter.h"
@implementation BlackPrinter
- (void)print
{
  NSLog(@"黑白打印机 打印黑白效果");
}

@end

ColorPrinter.m

#import "ColorPrinter.h"
@implementation ColorPrinter
- (void)print
{
    NSLog(@"彩色打印机");
}

@end

OtherPrinter.m

#import "OtherPrinter.h"
@implementation OtherPrinter

- (void)print
{
  NSLog(@"其他类型打印机");
}

@end

main.m

#import <Foundation/Foundation.h>
#import "BlackPrinter.h"
#import"ColorPrinter.h"
#import"Printer.h"
#import"OtherPrinter.h"

int main(int argc, const char *argv[])
{
  @autoreleasepool
  {
    enum KindOfPrinter //枚举
      {
        colorPrinter = 1,
        blackPrinter,
        otherPrinter
      };  //分号

    enum KindOfPrinter printerKind;
    NSLog(@"请选择打印机:(1彩色 2黑色 3其他)");
    scanf("%d",&printerKind);

    //父类声明变量
    Printer *printer;

    //根据类型 选择初始化方法的过程
    if(printerKind == colorPrinter)
    {
      printer = [[ColorPrinter alloc]init];
    }
    else if(printerKind == blackPrinter)
    {
      printer = [[BlackPrinter alloc]init];
    }
    else if(printerKind == otherPrinter)
    {
      printer = [[OtherPrinter alloc]init];
    }
    [printer print];
  }
  return 0;
}

相关文章

  • OC面向对象—多态

    OC面向对象—多态 OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没...

  • OC多态 - OC

    什么是多态:不同的对象以自己的方式响应相同名称方法的能力称为多态(父类指针指向子类对象) 多态的条件:有继承关系、...

  • OC多态

    面向对象的三大特性: 封装继承与多态;封装是对类中的一些字段, 方法进行保护, 不被外界所访问到, 有一种权限控制...

  • OC多态

    什么是多态:不同的对象以自己的方式响应相同名称方法的能力称为多态(父类指针指向子类对象)多态的条件:有继承关系、有...

  • OC:多态☀️

    版权声明:本文为博主原创文章,未经博主允许不得转载。 1、多态 父类指针指向子类对象 属性:封装了setter ...

  • OC -- 多态

    多态:同一种类型 具有多种的表现形态 多态的条件:必须存在继承关系子类重写父类的方法❗️父类声明的变量指向子类对象...

  • OC多态

    多态往简单来说就是父类的指针指向子类的对象。 //父类 @interfacesuperColor :NSObjec...

  • 多态

    OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。 在使用多态...

  • OC的简单总结

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

  • Swift 多态实现探究

    多态 父类指针指向子类对象 Swift 中多态的实现类似于 c++ 中的虚表 OC 多态实现利用的是 Runtim...

网友评论

    本文标题:OC -- 多态

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