zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Objective-C - 多态, 方法的重写, 多态和继承

方法重写继承 多态 Objective
2023-09-27 14:29:08 时间

/*

多态:

    同一种行为,对于不同的事物,具有完全不同的表现形式.

    

例如:

    打招呼的行为,中国人和英国人的方式不一样

    中国人会说:幸会幸会

    英国人会说:Nice to meet you!

 

如下代码:

 创建人类,属性:姓名和国籍,有一个打招呼的方法.

 创建中国人类和英国人类都继承自人类.

 中国人和英国人都拥有自己独特的打招呼的方法,因而重新的写了方法的实现,叫做方法的重写;

 

 */

#import <Foundation/Foundation.h>


//创建人类

//声明

@interface YYPerson : NSObject

{

    NSString *_name;

    NSString *_nationality;

}


- (void)setName:(NSString *)name;

- (NSString *)name;


- (void)setNationality:(NSString *)nationality;

- (NSString *)nationality;


- (void)sayHi;


@end


//实现

@implementation YYPerson


- (void)setName:(NSString *)name;

{

    _name = name;

}

- (NSString *)name

{

    return _name;

}


- (void)setNationality:(NSString *)nationality

{

    _nationality = nationality;

}

- (NSString *)nationality

{

    return _nationality;

}


- (void)sayHi

{

    NSLog(@"姓名:%@ 国籍:%@", _name, _nationality);

}


@end


//创建中国人类:继承自人类,并重写了人类的sayHi方法,因为中国人有自己独特的打招呼的方法;

//声明

@interface YYChinese : YYPerson


@end


//实现

@implementation YYChinese


- (void)sayHi

{

    NSLog(@"幸会幸会,我是%@,来自%@!", _name, _nationality);

}


@end


//创建英国人类:继承自人类,并重写了人类的sayHi方法,因为英国人有自己独特的打招呼的方法;

//声明

@interface YYEnglish : YYPerson


@end


//实现

@implementation YYEnglish


- (void)sayHi

{

    NSLog(@"Nice to meet you!,My name is %@,from %@!", _name, _nationality);

}


@end


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

  

    //创建中国人对象

    YYChinese *chinese = [YYChinese new];

    //赋值属性

    [chinese setName:@"黄飞鸿"];

    [chinese setNationality:@"中国"];

    

    //创建英国人对象

    YYEnglish *British = [YYEnglish new];

    //赋值属性

    [British setName:@"Eli"];

    [British setNationality:@"England"];

    

    //调用方法

    [chinese sayHi];

    [British sayHi];

    

    

    return 0;

}