OC语言day03-11多态

pragma mark 多态

pragma mark 概念

/**
 #warning 相同的方法 可以 抽取 父类(但是不要随便抽取父类) 需要符合条件才可以抽取父类即 : xxx 是 xxx (猫是动物)(如果是 说明可以抽取父类)
 什么是多态:
 多态就是 某一类 事物 的多种形态
 猫 : 猫 -> 动物
 狗 : 狗 -> 动物
 
 男人 : 男人 -> 人 - > 高级动物
 女人 : 女人 -> 人 - > 高级动物
 
 程序中的多态 : 父类 指针 指向 子类对象
 */

/*
 什么是多态:
 事物的多重表现形态
 
 在程序中如何表现:
 父类指针 指向 子类对象
 
 优点 :
 提高了代码的扩展性
 
 注意点:
 如果 父类指针 指向 子类对象, 如果需要调用子类特有的方法, 必须先强制类型 转换
 Animal *a1 = [Dog new];  // 父类
 Dog *d1 = (Dog *)a1;     // 强制类型 转换
 [d1 kanJia];             // 子类 对象方法
 */

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类
#import "Dog.h"
#import "Cat.h"
#import "Animal.h"
#import "Person.h"
#import "Pig.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
    /*
    Dog *d = [Dog new];
    [d eat];
    
    Cat *c = [Cat new];
    [c eat];
     */
    
#warning 多态
    /*
    // 多态 : 事物的 多种表现形态
    // 动态类型 : 在编译的时候 编译器只会检查 当前类型对应的类中 有没有需要调用的方法 (在Animal中 检查有没有eat方法)
    //           在运行时, 系统会自动判断 a1的真实类型 (下面的真实类型是 Dog)
    Animal *a1 = [Dog new];
    [a1 eat];
#warning 注意点: 在多态中, 如果想调用子类特有的方法 必须 强制类型转换为子类 才能调用
//    [a1 kanJia];    // 编译是 去看Animal 看有没有 kanJia 这个方法 没有救报错
    Dog *d1 = (Dog *)a1;
    [d1 kanJia];
     
     */
    
#warning 使用场景
    Dog *d = [Dog new];
    Cat *c = [Cat new];
    Pig *p = [Pig new];
    
    [Person foot:d];
    [Person foot:c];
    [Person foot:p];
    
#warning 总结
    /*
     什么是多态:
     事物的多重表现形态
     
     在程序中如何表现:
     父类指针 指向 子类对象
     
     优点 :
     提高了代码的扩展性
     
     注意点:
     如果 父类指针 指向 子类对象, 如果需要调用子类特有的方法, 必须先强制类型 转换
     Animal *a1 = [Dog new];  // 父类
     Dog *d1 = (Dog *)a1;     // 强制类型 转换
     [d1 kanJia];             // 子类 对象方法
     */
    
    return 0;
}

Person.h // 人类 (基本的父类)
#import <Foundation/Foundation.h>
#import "Dog.h"
#import "Cat.h"
#import "Animal.h"
#import "Pig.h" 

@interface Person : NSObject

#warning 没有访问到 成员变量 可以使用类方法
/*
+ (void)food:(Dog *)dog;
+ (void)foodCat:(Cat *)cat;
// 长颈鹿
// 白虎
// 孔雀
// 猴子
 */

+ (void)foot:(Animal *)animal;
@end
Person.m
#import "Person.h"

@implementation Person

/*
+ (void)food:(Dog *)dog
{
    [dog eat];
}

+ (void)foodCat:(Cat *)cat
{
    [cat eat];
}
*/

+ (void)foot:(Animal *)a
{
    [a eat];
}


@end
Animal.h // 动物类 (父类)
#import <Foundation/Foundation.h>
#import "Animal.h"
@interface Dog : Animal
- (void)eat;
- (void)kanJia;
@end
Animal.m

#import "Animal.h"

@implementation Animal

- (void)eat
{
    NSLog(@"吃东西");
}

@end


Dog.h //狗类 ((animal)子类)
###import <Foundation/Foundation.h>
#import "Animal.h"
@interface Dog : Animal
- (void)eat;
- (void)kanJia;
@end
Dog.m
#warning 重写父类方法
- (void)eat
{
    NSLog(@"啃骨头");
}

-(void)kanJia
{
    NSLog(@"看家");
}
@end

Cat.h // 猫类 (animal 子类)
#import <Foundation/Foundation.h>
#import "Animal.h"
@interface Cat : Animal

- (void)eat;
@end
Cat.m

#import "Cat.h"

@implementation Cat

#warning 重写父类方法
- (void)eat
{
    NSLog(@"吃鱼");
}
@end


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容