/* 僵尸 跳跃僵尸、舞王僵尸、铁桶僵尸 */ #import <Foundation/Foundation.h> /* super的作用 1.直接调用父类中的某个方法 2.super处在对象方法中,那么就会调用父类的对象方法 super处在类方法中,那么就会调用父类的类方法 3.使用场合:子类重写父类的方法时想保留父类的一些行为 QITA : 1,子类拥有父类所有的东西,因此可以在子类里面直接使用父类声明的实体变量或方法而无需再次声明。 2,子类如果重写了父类里面的方法则子类的对象在调用时会调用子类里的,而不再是父类里的方法。 3,父类的对象不能调用子类的方法。 4,父类的指针可以指向子类的对象,这个指针调用方法时将调用子类的方法(如果重写了的话)而不是父类里的方法,而子类的指针却不可以 指向父类的对象。 问题: *子类类方法可以直接调用父类类方法 *子类对象方法可以直接调用父类对象方法 ***那,子类对象能否调用父类类方法? -> [子对象 父类方法] or 如果重新了子类方法,还想调用父类方法,那就[super 父类方法] */ // 僵尸 @interface Zoombie : NSObject - (void)walk; + (void)test; - (void)test; @end @implementation Zoombie - (void)walk { NSLog(@"往前挪两步******"); } + (void)test { NSLog(@"Zoombie+test"); } - (void)test { NSLog(@"Zoombie-test"); } @end // 跳跃僵尸 @interface JumpZoombie : Zoombie + (void)haha; - (void)haha2; @end /*********************************************/ @implementation JumpZoombie + (void)haha //////////////////////////////////////////////// { [super test]; } - (void)haha2 /////////////////////////////////////////////// { [super test]; } - (void)walk ////////////////////////////////////////////////// { // 跳两下 NSLog(@"跳两下"); // 走两下(直接调用父类的walk方法) [super walk]; /////////////////////////////////////////// //NSLog(@"往前挪两步----"); } @end /********************************************/ int main() { //[JumpZoombie haha]; JumpZoombie *jz = [JumpZoombie new]; [jz haha2]; return 0; }
时间: 2024-10-13 23:51:05