//
// 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