@fiy-fish
2015-07-14T19:33:20.000000Z
字数 1914
阅读 1213
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 0
int 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