//方法的两个方法,初始化器,便利构造器(有封装的思想),属性的设置器,访问器-----属性的使用.语法。
//例子简化如下
// Student.h文件上的定义
#import <Foundation/Foundation.h>
@interface Student : NSObject
//没有指定成员变量的类型的话,系统会默认 成员变量的属性为 受保护行 @protected
{@public
NSString *name;
NSString *sex;
int age;
}
//声明属性
@property(nonatomic,retain)NSString*hobby;
//对一个学生的行为方法进行初始化输出
-(void)studyWith:(NSString*)with;
//设置器
-(void)setName:(NSString*)newName Sex:(NSString*)newSex andAge:(int)newAge;
//访问器
-(NSString*)getName;
-(NSString*)getSex;
-(int)getAge;
//声明初始化器
-(Student *)initWithName:(NSString *)newName Sex:(NSString *)newSex andAge:(int)newAge;
//声明构造便利器
+(Student*)studentWithName:(NSString*)newName Sex:(NSString*)newSex andAge:(int)newAge;
@end
//Student.h文件上的具体实现
#import "Student.h"
@implementation Student
@synthesize hobby;
//设置器功能的具体实现
-(void)setName:(NSString *)newName Sex:(NSString *)newSex andAge:(int)newAge
{
self->name=newName;
self->sex=newSex;
self->age=newAge;
}
//对访问器功能的具体实现
-(NSString*)getName{
return self->name;
}
-(NSString*)getSex{
return self->sex;
}
//对设置器功能的具体实现
-(void)setAge:(int)newAge{
if (newAge>0)
{
self->age=newAge;
}
}
//对访问器功能的具体实现
-(int)getAge{
return self->age;
}
//对一个学生的行为方法进行初始化输出 方法的具体实现
-(void)studyWith:(NSString *)with
{
NSLog(@"大家好,我是%@,很高兴在这里认识大家",with);
}
//Student.m文件中初始化器功能的具体实现
-(Student *)initWithName:(NSString *)newName Sex:(NSString *)newSex andAge:(int)newAge
{
if(self)
{
name=newName;
sex=newSex;
age=newAge;
}
NSLog(@"姓名:%@,性别:%@,年龄:%d",self->name,self->sex,self->age);
return self;
}
//便利构造器的具体实现
+(Student*)studentWithName:(NSString *)newName Sex:(NSString *)newSex andAge:(int)newAge
{
Student *student=[[Student alloc]init];
student->name=@"你好";
student->sex=@"女";
student->age=11;
return student;
}
@end
//main.m文件的调用
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Student *stu1=[[Student alloc]init];
//简单的对设置器和访问器的调用,感觉好苦逼
[stu1 setName:@"hah" Sex:@"女" andAge:100 ];
NSLog(@"%@,%@,%d",[stu1 getName],[stu1 getSex],[stu1 getAge]);
/*有属性声明的方法去直接调用,注,这里属性的内容是苹果公司为我们封装好了的,
属性.的运用,得是在声明成员变量的时候声明它们是属性,即@property(nonatomic,retain)NSString*hobby;然后得在是实现文件中(在声明类名的后面),加入一句@synthesize hobby; 最后在main.m文件中实现调用如下形式:stu1.hobby=@“运动”;*/
stu1.hobby=@"篮球";
NSLog(@"%@",stu1.hobby);
Student *stu=[[Student alloc]init];
[stu setName:@"李子" Sex:@"女" andAge:18];
NSLog(@"我是%@,性别:%@,年龄:%d",[stu getName],[stu getSex],[stu getAge]);
// Student *stu=[[Student alloc]initWithName:@"李子" Sex:@"女" andAge:-18];
//
// Student *stu2=[[Student alloc]initWithName:@"xxoo" Sex:@"女" andAge:100];
//NSLog(@"大家好我是%@,我是个好%@孩子,我今年有%d岁了",stu2->name,stu2->sex,stu2->age);
// }
// //对一个学生的行为方法进行初始化输出 的调用
// Student *stu3=[[Student alloc]init];
// [stu3 studyWith:@"XXXX"];
return 0;
}
}