第一步:先创建类,类中有各个元素的属性
创建类的方法:@interface 类名(类名首字母大写,这是规范):NSobject
{
@public
此处写类的属性例如:in t a;
}
类方法的声明(其实就相当于类的声明)
@en d(记住千万不可忘记)
@implementation 类名
此处写类实现的方法(也就是函数实现的方法)
方法有多种:第一种:无参数无返回值类型 -(void) eat;
第二种:无参有返回值类型 -(int)eat:
第三种:有参无返回值类型 -(void)eat:(NSString*)foodName addSum :(int)num;
第四种:有参有返回值类型 -(int)eat:(NSString*)foodName addSum :(int)num;
第五种:对象作为参数类型 -(void)eat(Dog *)dog;
第六种 对象作为返回值类型
@en d
int main(){
1创建类的对象:Dog *p=[Dog new];
2对象调用无参方法:[p:方法名];
对象调用有参方法:[p:方法名:传递参数 andnum 传递参数];
调用对象作为参数的方法:[p1 eat:p2];
return 0;
}
下面附上经典案例:
设计一个”狗“类
1> 属性
* 颜色
* 速度(单位是m/s)
* 性别
* 体重(单位是kg)
2>行为
* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
* 吠(叫):输出所有的属性
* 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
* 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,
做减法得到非零值,返回YES(1)
* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
#import <Foundation/Foundation.h>
typedef enum {white,black,green}Color;
typedef enum {woman,nv}Sex;
@interface Dog:NSObject
{
@public
Color _color;
float _speed;
float _weight;
}
-(void)eat:(NSString*) foodName addNum:(int)num;
-(void)jiao;
-(void)run:(NSString*) foodName addNum:(int)num;
-(BOOL)compareColor:(Dog*) dog1;
-(int)compareSpeed:(Dog*)dog2;
@end;
@implementation Dog
-(void)eat:(NSString*) foodName addNum:(int)num{
_weight=_weight+0.5*num;
}
-(void)jiao{
NSLog(@"颜色:%u,速度:%f,体重:%f",_color,_speed,_weight);
}
-(void)run:(NSString*) foodName addNum:(int)num{
_weight=_weight-0.2*num;
NSLog(@"速度是:%f,体重是:%f",_speed,_weight);
}
-(BOOL)compareColor:(Dog*) dog1{
if(_color==dog1->_color){
return YES;
}else{
return NO;
}
return 0;
}
-(int)compareSpeed:(Dog*)dog2{
return _speed-dog2->_speed;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
Dog *p1=[Dog new];
p1->_weight=13;
p1->_color=white;
p1->_speed=9;
[p1 eat:@"大米" addNum:5];
[p1 run:@"麻辣汤" addNum:5];
[p1 jiao];
Dog *p2=[Dog new];
p2->_speed=34;
p2->_color=black;
p2->_weight=34;
BOOL isSameColor=[p2 compareColor:p1];
NSLog(@"isSameColor=%d",isSameColor);
int cha=[p2 compareSpeed:p1];
NSLog(@"速度差是:%d",cha);
}
return 0;
}
[/code]
return 0;
} |
|