#import <Foundation/Foundation.h> @interface Student : NSObject { int _age; char *_name; } - (void) study; - (void) run; + (void) play; + (void) run; @end @implementation Student - (void) study { NSLog(@"%s在学习",self->_name); [self run]; //若在此调用类方法会报错的,因为该self是对象,不能调用类方法 } - (void) run { NSLog(@"今天有一个学生在跑步"); } + (void) play { NSLog(@"上体育课啦"); [self run]; //若在此调用对象方法会报错的,因为该self是指向类,不能调用对象方法 } + (void) run { NSLog(@"开始跑步!"); } @end int main() { [Student play]; // 结果:上体育课啦 // 开始跑步! Student *stu=[Student new]; stu->name="aa"; [stu study]; //结果:aa在学习 // 今天有一个学生在跑步 }
1.谁调用了self当前所在的方法,self就指向谁(self相当于一个指针)
当self所在方法是被对象调用,那么self就指向了调用的那个对象
当self所在的方法是由类调用,那么self就是指向该类
2.在对象方法中可以使用 self -> 成员变量名 访问类对象中的成员变量
3.也可以用self调用类方法/对象方法 :[self 方法名](在定义的类中使用)