黑马程序员技术交流社区

标题: 继承和多态 [打印本页]

作者: S970028126    时间: 2015-6-25 09:28
标题: 继承和多态

继承:
        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.局限性:
                                父类类型的变量不能直接调用子类特有的方法,必须强转为子类类型变量后,才能直接调用子类特有的方法
                                       
作者: cuin    时间: 2015-6-25 10:08
总结的很好!受教了!
作者: 离经叛道的女子    时间: 2015-6-27 00:03
不错 ,今天刚学到这里 复习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2