OC 继承

//
//  main.m
//  oc03_继承
//
//  Created by Vision on 14-9-15.
//  Copyright (c) 2014年 Vision. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Student.h"
#import "Teacher.h"
#import "CollegeStudent.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {

        Student *changKuan = [[Student alloc]initWithName:@"常宽" sex:@"男" age:22];
        [changKuan sayHi];
        
        NSLog(@"%@",[changKuan class]);
        
        Teacher *bobo = [Teacher alloc];
         NSLog(@"%@",[bobo class]);
        
        CollegeStudent *wangYiKai  = [[CollegeStudent alloc]initWithName:@"王医生" sex:@"男" age:22];
        [wangYiKai sayHi];
    
        Person *fengXiao = [[Person alloc]initWithName:@"冯晓" sex:nil age:0];
    
        
        //(void *)  NULL
        //(id) nil
        //(class) Nil
        
        
        Person *lizhi = [[Person alloc]initWithName:@"离职"];
        
        CollegeStudent *wuDongSheng = [[CollegeStudent alloc]initWithName:@"吴东升" sex:@"男" age:22 School:@"lanou3g" number:222222 major:@"mahor" academy:@"jishuaji"];
        
        Person *xueWeiChao = [Person personWithName:@"薛维超"];

    }
return 0;
}
<pre name="code" class="objc">//
//  Person.h
//  oc03_继承
//
//  Created by Vision on 14-9-15.
//  Copyright (c) 2014年 Vision. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    NSString *_name;
    NSString *_sex;
    int _age;
}
- (id)initWithName:(NSString *)name
               sex:(NSString *)sex
               age:(int)age;
- (id)initWithName:(NSString *)name;
///便利构造器
+ (id)personWithName:(NSString *)name;

- (void)setname:(NSString *)name;

- (void)setsex:(NSString *)sex;

- (void)setage:(int)age;

- (NSString*)name;

- (NSString*)sex;

- (int)age;

- (void)sayHi;


@end


//
//  Person.m
//  oc03_继承
//
//  Created by Vision on 14-9-15.
//  Copyright (c) 2014年 Vision. All rights reserved.
//

#import "Person.h"

@implementation Person
/// 指派、指定初始化方法
- (id)initWithName:(NSString *)name
               sex:(NSString *)sex
               age:(int)age
{
    NSLog(@"Person类初始化方法开始");
    self = [super init];
    if (self) {
        _name = name;
        _sex = sex;
        _age = age;
        
    }
    NSLog(@"Person类初始化方法结束");
    return self;
}
- (id)initWithName:(NSString *)name
{
    return [self initWithName:name sex:nil age:0];
}
+ (id)personWithName:(NSString *)name
{
    Person *p = [[Person alloc]initWithName:name];
    return p;
}
- (void)setname:(NSString*)name
{
    _name = name;
}

- (void)setsex:(NSString*)sex
{
    _sex = sex;
}

- (void)setage:(int)age
{
    _age = age;
}

- (NSString*)name
{
    return _name;
}

- (NSString*)sex
{
    return _sex;
}

- (int)age
{
    return _age;
    
}

- (void)sayHi
{
    NSLog(@"我是人类");
    NSLog(@"姓名:%@ 性别:%@ 年龄:%d ",
          _name, _sex, _age);
}
@end


//
//  Student.h
//  oc03_继承
//
//  Created by Vision on 14-9-15.
//  Copyright (c) 2014年 Vision. All rights reserved.
//

#import "Person.h"

@interface Student : Person
{
    NSString *_school;
    int _number;
}
- (id)initWithName:(NSString *)name
               sex:(NSString *)sex
               age:(int)age
            School:(NSString *)school
            number:(int)number;

- (void)setSchool:(NSString *)school;

- (void)setNumber:(int)number;

- (NSString*)school;

- (int)number;
@end


//
//  Student.m
//  oc03_继承
//
//  Created by Vision on 14-9-15.
//  Copyright (c) 2014年 Vision. All rights reserved.
//

#import "Student.h"

@implementation Student
///重写父类sayHi方法
- (void)sayHi
{
    NSLog(@"我是一名学生,我叫%@,性别%@,年龄%d",
          _name, _sex, _age);
}
- (id)initWithName:(NSString *)name
               sex:(NSString *)sex
               age:(int)age
            School:(NSString *)school
            number:(int)number
{
    NSLog(@"Student类初始化方法开始");
    //1.调用父类的初始化方法
    self = [super initWithName:name sex:sex age:age];
    //2.对特有的成员变量一一赋值
    if (self) {
        _school = school;
        _number = number;
    }
    //3.返回self
    NSLog(@"Student类初始化方法结束");
    return self;
}

- (void)setSchool:(NSString *)school
{
    _school = school;
}

- (void)setNumber:(int)number
{
    _number = number;
}

- (NSString*)school
{
    return _school;
}

- (int)number
{
    return _number;
}
@end

//
//  CollegeStudent.h
//  oc03_继承
//
//  Created by Vision on 14-9-15.
//  Copyright (c) 2014年 Vision. All rights reserved.
//

#import "Student.h"

@interface CollegeStudent : Student
{
    NSString *_major;
    NSString *_academy;
}
- (id)initWithName:(NSString *)name
               sex:(NSString *)sex
               age:(int)age
            School:(NSString *)school
            number:(int)number
             major:(NSString*)major
           academy:(NSString*)academy;
- (void)sayHi;
@end

//
//  CollegeStudent.m
//  oc03_继承
//
//  Created by Vision on 14-9-15.
//  Copyright (c) 2014年 Vision. All rights reserved.
//

#import "CollegeStudent.h"

@implementation CollegeStudent
- (id)initWithName:(NSString *)name
               sex:(NSString *)sex
               age:(int)age
            School:(NSString *)school
            number:(int)number
             major:(NSString*)major
           academy:(NSString*)academy
{
    NSLog(@"CollegeStudent类初始化方法开始");
    self = [super initWithName:name sex:sex age:age School:school number:number];
    if (self) {
        _major = major;
        _academy = academy;
    }
    NSLog(@"CollegeStudent类初始化方法结束");
    return self;
}
- (void)sayHi
{
    [super sayHi];//执行从父类继承下来的方法
//    NSLog(@"大家好,我是一名大学生,我叫:%@,性别:%@,年龄:%d,在%@学校%@学院读书,学号是%d,就读%@专业",
//          _name, _sex, _age, _school, _academy, _number, _major);
}
@end


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值