FJStudent.h
/**定义一个学生类。属性有姓名和年龄*/
@interface FJStudent : NSObject{
NSString *_name;
int _age;
}
/**初始化方法*/
- (instancetype) initWithName:(NSString *) name age :(int) age{
if (self = [super init]){
_name = name;
age = age;
}
/**学习方法*/
- (void) study:(NSString *):courseName;
/**打游戏方法*/
- (void) playGame:(NSString *):gameName;
/**看电影方法*/
- (void) watchMovie:(NSString *):movieName;
@end
FJStudent.m
/**这是学生类的实现部分,就是将FJStuden.h中定义的方法进行具体的实现*/
#import "FJStudent.h"
@implementation FJStudent
+ (instancetype) studentWithName:(NNString *)name age:(int)age{
return [[self alloc]initWithName:(NNString *)name age:(int)age];
}
- (instancetype) initWithName:(NNString *)name age:(int)age{
if(self = [super init]){
_name = name;
_age = age;
}
return self;
}
- (void) study:(NSString *) courseName{
NSLog(@"%@正在玩%@",_name,courseName);
}
- (void) playGame:(NSString *)gameName{
NSLog(@"%@正在玩%@",_name,gameName);
}
- (void) watchMovie{
if (_age<18){
NSLog(@"%@不能看%@");
}else{
NSLog(@"%@可以看%@");
}
}
@end
main.m
/**以下部分就是初始化一个类的对象。然后调用实现部分FJStuden的方法实现我们预期的动作!*/
// 写程序的终极原则: 高内聚 低耦合
// High cohesion low coupling
#import <Foundation/Foundation.h>
#import "FJStudent.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
FJStudent *s1 = [CDStudent studentWithName:@"王大锤" age:24];
//类是对象的模板,具体实现动作必须要创建对象。
[s1 study:@"C语言"];
//调用对象的具体方法格式为[对象名 方法名:参数]
[s1 play:@"LOL"];
[s1 watchJapaneseAV];
FJStudent *s2 = [[CDStudent alloc] initWithName:@"李狗蛋" age:15];
[s2 study:@"高中物理"];
[s2 play:@"斗地主"];
[s2 watchJapaneseAV];
}
return 0;
}