打印机,实现多态.输入1,使用彩色打印机.输入2,使用黑白打印机


(一)main函数:

#import <Foundation/Foundation.h>

#import "Person.h"

#import "Printer.h"

#import "BlackPrinter.h"

#import "ColorPrinter.h"


int main(int argc, const char * argv[]) {


    Person *person = [[Person alloc] init];

    

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

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

    NSInteger a;

    NSLog(@"输入12调换打印机");

    scanf("%ld",&a);

    if (a == 1) {

        [person print:printer1];


    }

    else

    [person print:printer2];

    

    

    return 0;

}

(二)Printer类

#import <Foundation/Foundation.h>


@interface Printer : NSObject


- (void)doPrint;


@end


#import "Printer.h"


@implementation Printer


- (void)doPrint{

    NSLog(@"打印机实现了打印");

}


@end


(三)Person类

#import <Foundation/Foundation.h>

#import "Printer.h"


@interface Person : NSObject


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


@end


#import "Person.h"


@implementation Person


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

    [printer doPrint];

}


@end


(四)ColorPrinter类


#import "Printer.h"


@interface ColorPrinter : Printer


@end


#import "ColorPrinter.h"


@implementation ColorPrinter


- (void)doPrint{

    NSLog(@"彩色打印机实现了打印");

}


@end


(五)BlackPrinter与ColorPrinter类相似,此处省略.


到此,就解决了这个简单的多态问题