A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© S970028126 中级黑马   /  2015-6-25 09:28  /  1417 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


继承:
        A
        {
               
        }

        B : A
        {
               
        }       //类B拥有类A的所有东西
继承的好处:       
                1.抽取重复代码
                2.建立了类之间的关系

继承的使用场合:
                1.当两个类拥有相同属性和方法时,就可以将相同的东西抽取到一个父类中
                2.当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类

void feed(Dog *d)
        {
                [d eat];
        }

        void feed2(Cat *c)
        {
                [c eat];
        }

        void feed(Animal *a)  //可以用这一个函数取代前面两个函数
        {                                            //多态的好处
                [a eat];
        }
              Animal *a = [Dog new]; //多态: 父类指针指向子类对象

多态的好处:
        如果参数中使用的是父类类型,可以传入父类,子类对象,节省代码

多态的局限性:
        Animal *aa = [Dog new];
        [aa run];//警告 能通过,但是不建议这样写
        父类类型的变量 不能 用来调用子类的方法,虽然能调用成功

        可以先强制转换
                Dog *dd = (Dog *)aa; //骗一下编译器
                [dd run];

总结:
   
        多态:
                继承:
                        1.没有继承,就没有多态
                        2.代码的体现:父类类型的指针指向子类对象
                        3.好处:如果参数中使用的是父类类型,可以传入父类,子类对象,节省代码
                        4.局限性:
                                父类类型的变量不能直接调用子类特有的方法,必须强转为子类类型变量后,才能直接调用子类特有的方法
                                       

2 个回复

倒序浏览
总结的很好!受教了!
回复 使用道具 举报
不错 ,今天刚学到这里 复习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马