OC中的继承和JAVA,C++都有相似之处,很容易理解,虽然不能多继承,但是有专门的方法和途径解决这个问题,今天只做单继承和多态的简单示范,新建一个Person类,包括.h和.m文件,然后Men类和Women类继承自该类,并重写了继承过来的cry方法,然后在main()方法中创建实例指向父类Person引用,简单多态后输出语句,具体结构如下:
Person.h代码如下:
- #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代码如下:
- #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:
- #import "Person.h"
- @interface men : Person
- @end
然后是men.m:
- #import "men.h"
- @implementation men
- -(void)cry
- {
- NSLog(@"男人就要哭得响亮");
- }
- @end
women.h
- #import "Person.h"
- @interface women : Person
- @end
women.m
- #import "women.h"
- @implementation women
- -(void)cry
- {
- NSLog(@"女人就是要哭得委婉");
- }
- @end
最后在main()方法中进行测试:
- #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;
- }
最后得到以下输出结果:
原文地址:http://blog.csdn.net/holydancer/article/details/7334377