OC -- 多态

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

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

创建父类: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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面向对象的三大特性: 封装继承与多态;封装是对类中的一些字段, 方法进行保护, 不被外界所访问到, 有一种权限控制...
    李小六_阅读 1,003评论 1 4
  • OC面向对象—多态 OC面向对象—多态一、基本概念多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多...
    清风沐沐阅读 740评论 0 1
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 1、多态 父类指针指向子类对象 属性:封装了setter ...
    LeaderBiao阅读 307评论 0 1
  • 什么是多态:不同的对象以自己的方式响应相同名称方法的能力称为多态(父类指针指向子类对象) 多态的条件:有继承关系、...
    以太死多阅读 2,420评论 1 2
  • 雨后,晕开几缕浮云 浅浅弥漫水汽氤氲 心情 被叶落占据 旋转 纷飞 零散了一地光晕 闭眼 倾听 风得到阳光的应允 ...
    漠月泠泠阅读 158评论 6 3