Objective-C - 多态, 方法的重写, 多态和继承
/*
多态:
同一种行为,对于不同的事物,具有完全不同的表现形式.
例如:
打招呼的行为,中国人和英国人的方式不一样
中国人会说:幸会幸会;
英国人会说: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;
}
相关文章
- javascript - 实现jquery类似的$调用方法
- 【C#】overide可重写从更高父级继承来的virtual方法
- Android重写Activity的dispatchTouchEvent方法,记录每一次点击事件
- 学习新方法:加强探索性测试技能
- java为什么要重写hashCode和equals方法
- 方法的重写,覆盖 override
- 27 面向对象编程 多态 代码 多态注意事项 有些方法不能重写
- c# 中重载WndProc,实现重写“最小化”自定义功能的方法
- java--方法重写与重载
- 《C++编程惯用法——高级程序员常用方法和技巧》——2.3 公用数据
- iOS方法重写
- Objective-c 类的继承 方法重写 方法重载
- ubuntu终端代码上传github最简方法
- C#遍历List并删除某个或者几个元素的方法
- stylus使用文档总结:选择器+变量+插值+运算符+混合书写+方法
- 把C编译成javascript的方法
- iOS - 重写set和get方法后,为什么使用时会发生无效?解析命名规范
- java中,一个类实现某个接口,必须重写接口中的所有方法吗?
- git clone 出现fatal: unable to access https://github 类错误解决方法