多态的条件...

150 篇文章 0 订阅

多态的条件: 有继承关系, 有方法重写 , 父类的声明变量指向 之类对象.

 // 代码体现: 用父类类型的指针指向 子类对象, 多态.

Animal * animal = [[Dog alloc] init];

		struct Animal {
			char name[20];
			int age;
			void (*function)(int, int);
		};

        struct Dog {
            char name[20];
            int age;
            void (*function)(int, int);
        };

        //猜测多态底层是用C实现的吧, 应该是用的 C的结构体吧,等号两边想要赋值其占用空间必须一致, 继承关系表示 Animal & Dog 结构体大小一样,至于父类之所以能调用子类的方法, 结构体只需要存储函数指针,只需8个字节,改写父类方法就是改写方法体,在代码区. 至于要解释 子类多出来的成员 & 方法为什么不能访问的问题...父类的结构体大小只有 sizeof(Animal) 这么大, 用父类指针访问子类对象的时候 只能偏移 sizeof(Animal)的大小的量.因此父类无法访问子类多出来的方法 一切都是猜测...( ⊙ o ⊙ )


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值