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;
}
多态:
同一种行为,对于不同的事物,具有完全不同的表现形式.
例如:
打招呼的行为,中国人和英国人的方式不一样
中国人会说:幸会幸会;
英国人会说: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;
}
相关文章推荐
- A.4-继承,方法重写(覆盖)(override),虚函数(virtaul)和多态,抽象方法和抽象类abstract,密封类(sealed)和密封方法,常量的定义(const)
- 多态、继承---常量的覆盖和方法的重写
- 多态理解,方法重写分析,类继承与接口实现中,方法重写的实现机制的区别
- objective-c 学习笔记- 继承、重写、虚方法
- JAVA【类】析构器、重载与继承、方法的重写、自动转型、多态、方法与类的分类、接口继承
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- JAVA 继承、方法重写、多态学习笔记
- 方法重写,继承,多态
- 构造器、方法重载、继承、方法重写、自动转型、多态课堂笔记
- Objective-c 类的继承 方法重写 方法重载
- java 继承 方法重写 自动转型 多态 接口 抽象类
- 子类继承父类,重写父类方法,运用多态时调用重写的方法时调用子类的还是调用父类的?
- Objective-C 类的继承、方法的重写和重载
- 类、对象、继承、封装、多态、方法的重载和重写、Java的访问修饰符与其它关键字
- 转: Objective-c 类的继承 方法重写 方法重载
- 类小结1:方法重载 变量 封装 import 继承 重写父类方法 调用父类构造方法 多态
- 2016/08/11 继承 方法重写 多态
- 封装、继承、多态与重写及方法
- 5. 15 Objective-C 继承,方法,多态
- 继承、方法重写和多态