多态

 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;
    
    
    
}