@fiy-fish
2015-07-14T11:33:20.000000Z
字数 1914
阅读 1443
Objective-c
// main.m// day02-02-类方法//// Created by Aaron on 15/7/2.// Copyright (c) 2015年 Aaron. All rights reserved.//#import <Foundation/Foundation.h>#import "Dog.h"typedef struct{int number;}STD;#if 0int main(int argc, const char * argv[]) {@autoreleasepool {//+ 开头的方法 叫做类方法 由类来调用Dog *dog = [[Dog alloc]init];//Class 类类型的指针Dog *dog1 = [[Dog alloc]init];[Dog test1];}return 0;}#endif//实现一个计算器类,计算两个数字的加减乘除#import "JiSuanQi.h"int main(){JiSuanQi *jSQ = [[JiSuanQi alloc] init];[jSQ setNum1:10];[jSQ setNum2:9];[jSQ setC:'-'];NSLog(@"%ld",[jSQ jiSuan]);NSLog(@"%ld",[JiSuanQi jiSuanNum1:10 andC:'*' andNum2:9]);}
#import <Foundation/Foundation.h>@interface JiSuanQi : NSObject{NSInteger _num1;NSInteger _num2;char _c;}-(void)setNum1:(NSInteger)num;-(void)setNum2:(NSInteger)num;-(void)setC:(char)c;//-(NSInteger)add;-(NSInteger)jiSuan;+(NSInteger)jiSuanNum1:(NSInteger)num1 andC:(char)c andNum2:(NSInteger)num2;@end
#import "JiSuanQi.h"@implementation JiSuanQi-(void)setNum1:(NSInteger)num{if(_num1 != num){_num1 = num;}}-(void)setNum2:(NSInteger)num{if(_num2 != num){_num2 = num;}}-(void)setC:(char)c{if(_c != c){_c = c;}}-(NSInteger)jiSuan{switch(_c){case '+':return _num1+_num2;case '-':return _num1-_num2;case '*':return _num1*_num2;case '/':return _num1/_num2;}return 0;}NSInteger num = 0;+(NSInteger)jiSuanNum1:(NSInteger)num1 andC:(char)c andNum2:(NSInteger)num2{switch(c){case '+':return num1+num2;case '-':return num1-num2;case '*':return num1*num2;case '/':return num1/num2;}return 0;}@end
#import <Foundation/Foundation.h>@interface Dog : NSObject{NSInteger _weight;}+(void)test1;@end
#import "Dog.h"@implementation Dog+(void)load{NSLog(@"加载类");}+(void)initialize{NSLog(@"创建类对象");}+(void)test1{//类方法里面不能直接使用实例变量,因为实例变量属于对象//类方法不依赖于实例变量,所以对于一些工具类,可以直接用类方法来实现NSLog(@"调用+test1");//想要在类方法中使用实例变量//不能通过self来使用,要通过对象来使用Dog *dog = [[Dog alloc] init];dog->_weight = 0;//类方法里面可以直接使用self调用类方法//但是想要调用实例方法,则需要提供对象,利用对象来调用实例方法[dog test1];}//类方法和实例方法同名是允许的,因为符号不同-(void)test1{//实例方法里面调用类方法,直接用类名来调用就可以了NSLog(@"-test1");}@end
