您的位置:首页 > 移动开发 > Objective-C

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

2016-12-28 16:44 316 查看
/*

多态:

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

    

例如:

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

    中国人会说:幸会幸会; 

    英国人会说: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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐