=====文档变更状态====
2015-12-14:发布
=================
day02-[2015-12-11]
一、类的简单定义
1.直接使用@implementation指令
2.将成员变量定义在一对{}中
3.在{}后定义方法/行为
4.最后加上@end指令
5.类名使用PASCAL命名规范,一般在类名前加前缀
6.创建对象:
类名* 指针名=[类名 new];
7.访问成员变量:
指针名->成员变量名
8.访问方法:
[指针名 方法名];
// 定义一个简单类
#import <Foundation/Foundation.h>
@implementation Person : NSObject // 定义一个简单类用@implementatopn的方式
{
@public // 不写默认是私有的下面的main函数不能用箭头访问此处的三个变量
NSString* name;
int age;
char gender;
}
-(void)say{
NSLog(@"I am %@,age is %d,gender is %c.",name,age,gender);
}
-(void)eat:(NSString*)food{
}
-(int)doWork{
return 0;
}
@end
int main1() {
Person* tang=[Person new]; // 具体化、实例化对象用new的方式
tang->age=50; // 给成员变量age赋值,”结构体”用箭头访问
tang->name=@"Sanzang"; // 给成员变量name赋值
tang->gender='M'; // 给成员变量gender赋值
[tang say]; //方法调用
return 0;
}
二、类的规范语法
1.分成声明和实现二部分
2.声明(也称为:接口):使用@interface
成员变量(属性)的定义、方法的声明(没有方法体),以头文件.h形式给出
3.实现:使用@implementation
方法的实现,以.m文件给出
4.可以使用Xcode的模板创建
5.创建对象的另一种方式:
类名* 指针名=[[类名 alloc]init];
三、方法
1.定义在类中的是方法method,类外的是函数function
2.方法分为对象方法(-)和类方法(+);对象方法必须由对象实例来调用,类方法必须由类名来调用;对象方法可以访问成员变量,而类方法不可以
3.方法参数:使用“:”与方法名分割,多个参数使用空格分隔,且每个参数都应有一个“:”,最好给每个参数一个形参标签
4.只在接口中声明,没有实现的可以调用并通过编译,但运行会出错;没有声明只有实现的方法(暂时)无法调用,可以当做私有方法
5.同一类中不允许出现同名的类方法或同名的对象方法,方法名包括“:”和形参标签;可以有与对象方法同名的类方法
备注:下面两段代码比较简单,不在写注释和注意点
// YYPerson—规范定义一个类-1
// YYPerson.h
@interface YYPerson : NSObject
{
@public
NSString* name;
int age;
char gender;
}
-(void)say;
-(void)eat:(NSString*)food;
-(int)doWork;
+(void)test;
-(void)doSomething:(NSString*)job withTool:(NSString*)tool;
-(void)method1:(int)a :(int)b :(int)c;
-(void) method2:(int)n other:(int)m;
-(void)test;
@end
// YYPerson.m
#import "YYPerson.h"
@implementation YYPerson
-(void)say{
NSLog(@"I am %@,age is %d,gender is %c.",name,age,gender);
}
-(void)eat:(NSString *)food{
}
-(int)doWork{
return 0;
}
+(void)test{
// NSLog(@"this is test method%@.",name);
}
-(void)doSomething:(NSString *)job withTool:(NSString *)tool{
NSLog(@"%@ is doing %@ using %@",name,job,tool);
}
-(void)method1:(int)a :(int)b :(int)c{
NSLog(@"a=%d,b=%d,c=%d",a,b,c);
}
-(void)ttt{
NSLog(@"ttt method");
}
@end
// test1.m
#import "YYPerson.h"
int main2(){
YYPerson* person=[[YYPerson alloc]init];//new
// NSLog(@"age:%d",person->age);
person->name=@"mike";
[person say];
[YYPerson test];
NSLog(@"============");
[person doSomething:@"code" withTool:@"xcode"];
[person method1:1 :2 :3];
// [person ttt];
[person method2:10 other:4];
return 0;
}
// YYBook—规范定义一个类-2
// YYBook.h
#import <Foundation/Foundation.h>
@interface YYBook : NSObject
{
@public
NSString* title;
NSString* author;
int amount;
float price;
}
-(void)sell:(int)qty;
-(void)buy:(int)qty;
+(void)intro;
@end
// YYBook.m
#import "YYBook.h"
@implementation YYBook
-(void)sell:(int)qty{
if(qty<=amount){
amount-=qty;
NSLog(@"卖出%d本《%@》,库存%d本。",qty,title,amount);
}
else{
NSLog(@"《%@》库存%d本,不够销售。",title,amount);
}
}
-(void)buy:(int)qty{
amount+=qty;
NSLog(@"买入%d本《%@》,库存%d本。",qty,title,amount);
}
+(void)intro{
// NSLog(@"this book is %@.",title);
}
@end
// testBook.m
#import "YYBook.h"
int main(){
YYBook* bk=[YYBook new];
bk->title=@"iOS入门";
bk->author=@"Jobs";
bk->price=39.99;
bk->amount=10;
[bk buy:4];
[bk sell:45];
NSLog(@"《%@》的库存是%d本。",bk->title,bk->amount);
YYBook* bk2=[YYBook new];
bk2->title=@"OC入门";
bk2->author=@"Will";
bk2->price=99.99;
bk2->amount=3;
[bk2 buy:2];
[YYBook intro];
return 0;
}
———————–EOF——————-