定义:定义的过程和对象方法一致,只不过+开头
调用:[类名 方法名];
使用注意:
1)类方法可以和实例方法同名,这个并不影响使用
Caculator *calc = [Caculator new];
//调用对象方法
int sum1 = [calc sum:23 andNum2:45];
//调用类方法
int sum2 = [Caculator sum:23 andNum2:45];
2)类方法可以从父类继承
3)类方法和实例方法一样,在interface里声明,在implementation里实现
4)类方法只能用类名去调用,对象方法只能用对象名调用
类方法的优点:节省内存空间 提高效率作为工具方法
类方法易犯的错误:
1)在类方法中使用了类的成员变量
类方法和对象方法的比较:
类方法: 以+开头
不可以使用成员变量
用类名调用类方法
类方法可以调用对象方法和类方法
类方法不可以调用自身,会造成死循环
对象方法: 以-开头
可以使用成员变量
用对象调用对象方法
对象方法可以调用当前对象或者其他对象的方法(通过将对象作为参数传入方法)
对象方法可以调用类方法
类方法的应用场景
1.如果调用一个类方法,该方法不需要使用成员变量,那么我们可以将该方法声明为类方法
typedef enum {kColorWhite,kColorBlack,kColorTHJ} Color;
@interface IPhone : NSObject
{
@public
Color _color;
}
+(NSString *)getPhoneColor:(Color) color;
@end
@implementation IPhone
+(NSString *)getPhoneColor:(Color) color{
NSString *colorName;
//根据color的值作判断
//0 1 2
//kColorWhite kColorBlack kColorTHJ
switch (color) {
case kColorWhite:
colorName = @"白色";
break;
case kColorBlack:
colorName = @"黑色";
break;
case kColorTHJ:
colorName = @"土豪金";
break;
default:
break;
}
return colorName;
}
@end
匿名类的概念及使用
@interface Car : NSObject
{
@public
int _speed;
}
-(void)start;
-(void)stop;
@end
@implementation Car
-(void)start{
NSLog(@"车已经启动,正准备以%d的速度跑",_speed);
}
-(void)stop{
NSLog(@"咯吱,车停了");
}
@end
封装的概念和原理
给每一个实例变量定义两个方法:设置变量的方法(set)获取变量值得方法(get)
set方法的书写规范:
set方法一定是一个对象方法
set方法一定不能有返回值
set方法必须以set开头
set之后跟的是实例变量去掉下划线,并且首字母大写
set方法一定有参数,而且参数的类型和实例变量的类型一致
set方法的形参名一般是去掉下环线的实例变量名
形参名不能和实例变量名同名
set方法实现中,一定要用形参给实例变量赋值
get方法书写规范
get方法一定是一个对象方法
get方法一定有返回值,返回值的类型和实例变量的类型要一致
get方法的方法名是去掉下划线的实例变量名
get方法一定没有参数
get方法的实现中,一定是返回实例变量值