OC学习_2_关于类的定义

来源:互联网 发布:网络炒作公司 编辑:程序博客网 时间:2024/04/26 17:18

=====文档变更状态====
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;}@endint 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——————-

0 0
原创粉丝点击