多态
1.没有继承就没有多态
2.代码的体现:父类类型的指针指向子类对象
3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
4.局限性:
1> 父类类型的变量 不能 直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法
@interface Animal : NSObject - (void)eat; @end @implementation Animal - (void)eat { NSLog(@"Animal-吃东西----"); } @end // 狗 @interface Dog : Animal - (void)run; @end @implementation Dog - (void)run { NSLog(@"Dog---跑起来"); } - (void)eat { NSLog(@"Dog-吃东西----"); } @end // 猫 @interface Cat : Animal @end @implementation Cat - (void)eat { NSLog(@"Cat-吃东西----"); } @end
super的作用
1.直接调用父类中的某个方法
2.super处在对象方法中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法
3.使用场合:子类重写父类的方法时想保留父类的一些行为
#import <Foundation/Foundation.h> @interface Zoombie : NSObject -(void)test; +(void)test; -(void)wlak; @end @implementation Zoombie -(void)test { NSLog(@"调用了-test方法"); } +(void)test { NSLog(@"调用了+test方法"); } -(void)wlak { NSLog(@"挪移挪"); } @end @interface JumpZoombie : Zoombie -(void)haha; +(void)haha; @end @implementation JumpZoombie -(void)haha { [super test]; } +(void)haha { [super test]; } -(void)wlak { NSLog(@"跳一跳"); [super wlak]; } @end int main() { JumpZoombie *gp = [JumpZoombie new]; [gp haha]; [JumpZoombie haha]; [gp wlak]; return 0; }
#import <Foundation/Foundation.h> @interface Student : NSObject { NSString *_str; } @end @implementation Student @end int mian() { NSString *str = @"hahhah"; NSLog(@"我在%@哈啊哈",str); return 0; }
时间: 2024-12-28 15:47:05