objective c 中的继承和多态简单示意(二)
2012-12-19 11:14
399 查看
OC中的继承和JAVA,C++都有相似之处,很容易理解,虽然不能多继承,但是有专门的方法和途径解决这个问题,今天只做单继承和多态的简单示范,新建一个Person类,包括.h和.m文件,然后Men类和Women类继承自该类,并重写了继承过来的cry方法,然后在main()方法中创建实例指向父类Person引用,简单多态后输出语句,具体结构如下:
Person.h代码如下:
[plain] view
plaincopy
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int age;
NSString *name;
}
-(void)setAge:(int)age setName:(NSString *)name;//age 和 name的set方法
-(void)cry; //呆会儿子类继承该方法后要复写
//下面是age和name的get方法,不写get是因为OC中get方法一般以指针为参数;
-(int)age;
-(NSString *)name;
@end
Person.m代码如下:
[cpp] view
plaincopy
#import "Person.h"
@implementation Person
-(void)setAge:(int)a setName:(NSString *)n
{
name=n;
age=a;
}
-(int)age
{
return age;
}
-(NSString *)name
{
return name;
}
-(void)cry
{
NSLog(@"是人都会哭");
}
@end
接下来是men.h:
[plain] view
plaincopy
#import "Person.h"
@interface men : Person
@end
然后是men.m:
[plain] view
plaincopy
#import "men.h"
@implementation men
-(void)cry
{
NSLog(@"男人就要哭得响亮");
}
@end
women.h
[plain] view
plaincopy
#import "Person.h"
@interface women : Person
@end
women.m
[plain] view
plaincopy
#import "women.h"
@implementation women
-(void)cry
{
NSLog(@"女人就是要哭得委婉");
}
@end
最后在main()方法中进行测试:
[plain] view
plaincopy
#import <Foundation/Foundation.h>
#import "Person.h"
#import "men.h"
#import "women.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person *person = [Person new];
Person *man = [men new];//子类对象指向父类引用;
Person *woman = [women new];
[man setAge:23 setName:@"男人"];//子类对象使用继承来的方法;
[woman setAge:21 setName:@"女人"];
NSLog(@"我的名字是%@,我的年龄是%d",[man name],[man age]);
NSLog(@"我的名字是%@,我的年龄是%d",[woman name],[woman age]);
[person cry];//父类中的cry方法;
[man cry]; //子类对象复写了父类的方法;
[woman cry];
}
return 0;
}
最后得到以下输出结果:
转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7334377
Person.h代码如下:
[plain] view
plaincopy
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int age;
NSString *name;
}
-(void)setAge:(int)age setName:(NSString *)name;//age 和 name的set方法
-(void)cry; //呆会儿子类继承该方法后要复写
//下面是age和name的get方法,不写get是因为OC中get方法一般以指针为参数;
-(int)age;
-(NSString *)name;
@end
Person.m代码如下:
[cpp] view
plaincopy
#import "Person.h"
@implementation Person
-(void)setAge:(int)a setName:(NSString *)n
{
name=n;
age=a;
}
-(int)age
{
return age;
}
-(NSString *)name
{
return name;
}
-(void)cry
{
NSLog(@"是人都会哭");
}
@end
接下来是men.h:
[plain] view
plaincopy
#import "Person.h"
@interface men : Person
@end
然后是men.m:
[plain] view
plaincopy
#import "men.h"
@implementation men
-(void)cry
{
NSLog(@"男人就要哭得响亮");
}
@end
women.h
[plain] view
plaincopy
#import "Person.h"
@interface women : Person
@end
women.m
[plain] view
plaincopy
#import "women.h"
@implementation women
-(void)cry
{
NSLog(@"女人就是要哭得委婉");
}
@end
最后在main()方法中进行测试:
[plain] view
plaincopy
#import <Foundation/Foundation.h>
#import "Person.h"
#import "men.h"
#import "women.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person *person = [Person new];
Person *man = [men new];//子类对象指向父类引用;
Person *woman = [women new];
[man setAge:23 setName:@"男人"];//子类对象使用继承来的方法;
[woman setAge:21 setName:@"女人"];
NSLog(@"我的名字是%@,我的年龄是%d",[man name],[man age]);
NSLog(@"我的名字是%@,我的年龄是%d",[woman name],[woman age]);
[person cry];//父类中的cry方法;
[man cry]; //子类对象复写了父类的方法;
[woman cry];
}
return 0;
}
最后得到以下输出结果:
转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7334377
相关文章推荐
- objective c 中的继承和多态简单示意(二)
- objective c 中的继承和多态简单示意(二)
- objective c 中的继承和多态简单示意(二)
- 用一个简单示例来说明C#中的继承、封装和多态
- php类的封装、继承和多态的简单理解
- objective C中继承、协议、分类和多态的实现
- 关于封装,继承,多态三个概念的简单理解
- 黑马程序员_ Objective C 封装,继承,多态总结
- java中面向对象三大思想(继承、封装、多态)简单应用
- objective C程序 封装、继承及多态
- Java打造简单的游戏数据库(继承与多态的应用)
- C#多重继承 + 多态 + 扩展方法 简单示例
- 简单的封装继承多态
- 简单理解Java中的类、对象、继承、多态等概念
- c语言中继承和多态的简单实现
- c++继承与多态概念的简单总结
- JAVA的三大特征 封装继承多态- 简单总结
- ES6 继承、多态简单demo
- C#中简单的继承和多态
- 关于java 继承和简单多态