#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(@"开始跑步!"); } @endint 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 方法名](在定义的类中使用)