OC03 继承、初始化方法、便利构造器-1
来源:互联网 发布:网络模拟软件 编辑:程序博客网 时间:2024/06/04 01:01
// Person.h
#import <Foundation/Foundation.h>
@interface Person :NSObject
{
NSString *_name;
NSString *_gender;
int _age;
}
//setter
- (void)setName: (NSString *)name;
- (void)setGender: (NSString *)gender;
- (void)setAge: (int)age;
//getter
-(NSString *)name;
-(NSString *)gender;
-(int)age;
// 打印所有的实例变量
- (void)printInformation;
#pragma mark 自定义初始化方法
// 自定义初始化方法
- (id)initWithName: (NSString *)name// ***出错点:泛型!!!-(id)
Gender: (NSString *)gender
Age: (int)age;
@end
// Person.m
#import "Person.h"
@implementation Person
//setter/getter
- (void)setName: (NSString *)name{
_name = name;
}
- (void)setGender: (NSString *)gender{
_gender = gender;
}
- (void)setAge: (int)age{
_age = age;
}
-(NSString *)name{
return _name;
}
-(NSString *)gender{
return_gender;
}
-(int)age{
return _age;
}
// 打印所有的实例变量
- (void)printInformation{
NSLog(@"姓名:%@,性别:%@,年龄:%d",_name, _gender, _age);
}
#pragma mark 自定义初始化,赋值
// 自定义初始化,赋值
- (id)initWithName: (NSString *)name
Gender: (NSString *)gender
Age: (int)age{
_name = name;
_gender = gender;
_age = age;
return self;
}
@end
// Student.h
#import "Person.h"
@interface Student :Person
{
NSString *_schoolName;
NSString *_ID;
}
////setter/getter
- (void)setSchoolName: (NSString *)schoolName;
- (void)setID: (NSString *)ID;
- (NSString *)schoolName;
- (NSString *)ID;
- (void)printInformation;
@end
// Student.m
#import "Student.h"// 不引入头文件,则无法完成继承。即:继承就得引入头文件。
@implementation Student
#pragma mark 重写父类的方法
// 重写父类的方法
- (void)printInformation{
NSLog(@"客官,你叫:%@,你的性别:%@,年龄:%d, 学校:%@,ID:%@",_name, _gender, _age,_schoolName,_ID);
}
- (void)setSchoolName: (NSString *)schoolName{
_schoolName = schoolName;
}
- (void)setID: (NSString *)ID{
_ID = ID;
}
- (NSString *)schoolName
{
return_schoolName;
}
- (NSString *)ID{
return _ID;
}
#pragma mark description方法
// description方法是由系统提供的一种描述对象特征的一个实例方法,默认在打印一个对象时,会调用该方法,返回类名+对象地址。我们可以重写这个方法,将若干实例变量拼接为一个字符串返回,这样就可以打印我们想要的信息。
- (NSString *) description{
//使用字符串类,创建出一个字符串对象,然后使用格式初始化方法来将参数拼接进这个字符串对象
NSString *string = [[NSStringalloc] initWithFormat:@"嘿,你的名字是:%@,你的性别:%@,年龄:%d, 学校:%@,ID:%@",_name, _gender, _age,_schoolName,_ID ];
return string;
}
@end
// main.m
#import <Foundation/Foundation.h>
#import "Person.h"// <>引入系统提供的头文件 ""引入自己创建的头文件
#import "Student.h"
int main(int argc,const char * argv[]) {
#pragma mark -继承
/*
* 继承的特性:
* 1、单继承:继承是单向的(不能相互继承)、继承也是单点的(子类只能有一个父类)
* 2、传递性:子类具备父类的所有实例变量和方法,并且能通过父类继承到父父类的实例变量和方法。
* 用代码实现继承:
在类的.h文件中,@interface后的冒号表示继承关系,冒号左边的类继承自冒号右边的类(没有特殊说明,一般是NSObject,所有类最终都继承自该类)
*/
#pragma mark --创建一个Person类的对象person1
Person *person1 = [[Personalloc] initWithName:@"张学友"Gender:@"男"Age:38];
[person1 printInformation];
#pragma mark --创建一个继承自Person类的Student类的对象student1
//继承自Person类的子类,可以拥有父类的所有非私有的实例变量和方法
Student *student1 = [[Studentalloc] initWithName:@"爱新觉罗玄烨"Gender:@"男"Age:77];
// 对象调用setter方法修改
[student1setSchoolName:@"西安帝国建筑科技大学"];
[student1setID:@"110"];
//如果子类重写了父类的方法(见studet.m),那么将会执行重写的方法.
// [student1 printInformation];
#pragma mark --调用对象的description方法
// 使用NSlog直接打印一个对象时,会调用对象的description方法。
NSLog(@"%@", student1);
#pragma mark 总结
/*
今天学习了继承的特性:
* 继承的特性:
* 1、单继承:继承是单向的(不能相互继承)、继承也是单点的(子类只能有一个父类)
* 2、传递性:子类具备父类的所有实例变量和方法,并且能通过父类继承到父父类的实例变量和方法。
* 用代码实现继承:
在类的.h文件中,@interface后的冒号表示继承关系,冒号左边的类继承自冒号右边的类(没有特殊说明,一般是NSObject,所有类最终都继承自该类)
以及description方法的使用
// description方法是由系统提供的一种描述对象特征的一个实例方法,默认在打印一个对象时,会调用该方法,返回“类名+对象地址”。我们可以重写这个方法,将若干实例变量拼接为一个字符串返回,这样就可以打印我们想要的信息。
- (NSString *) description{
// 使用字符串类,创建出一个字符串对象,然后使用格式初始化方法来将参数拼接进这个字符串对象
NSString *string = [[NSString alloc] initWithFormat:@"嘿,你的名字是:%@,你的性别:%@,年龄:%d, 学校:%@,ID:%@", _name, _gender, _age, _schoolName, _ID ];
return string;
}
*/
return 0;
}
- OC03 继承、初始化方法、便利构造器-1
- OC03 继承、初始化方法1
- 【继承】指定初始化方法【便利构造器】
- 03 继承 初始化方法 便利构造器
- 继承 初始化方法 便利构造器
- OCday3 初始化方法, 便利构造器, 继承
- OC_继承,便利构造器,初始化方法
- OC_继承,便利构造器,初始化方法
- OC_继承,便利构造器,初始化方法
- OC_继承,便利构造器,初始化方法
- OC_继承,便利构造器,初始化方法
- day3: 继承、初始化方法、便利构造器
- 继承 初始化方法 便利构造器
- [TwistedFate]继承 初始化方法 便利构造器
- 继承、初始化方法、便利构造器
- OC03 继承、初始化方法2
- OC之继承,初始化方法,便利构造器
- OC_03_初始化方法_便利构造器_继承
- Python 遍历二叉树
- java实现极简的LRU算法
- mysql远程设置
- JavaScript API 设计原则
- [leetcode]Convert Sorted Array to Binary Search Tree
- OC03 继承、初始化方法、便利构造器-1
- Android Asynchronous Http Client 开发实例——上传文件
- socket(一)
- 二分 Codeforces591D Chip 'n Dale Rescue Rangers
- [LintCode]Count of Smaller Number before itself
- Mahout随机森林算法--分类无标签数据
- Unity3D中常用的数据结构总结与分析
- Makefile中的$的使用
- CSU 1541 判断最小生成树是否唯一