黑马程序员技术交流社区

标题: 多态中向上转型和向下转型的详解? [打印本页]

作者: 魏腾飞    时间: 2012-1-16 10:21
标题: 多态中向上转型和向下转型的详解?
本帖最后由 魏腾飞 于 2012-1-19 10:04 编辑

多态中向上转型和向下转型的详解?尤指非静态成员方法的调用,详解···
作者: 王--明    时间: 2012-1-16 12:16
在多态中,向上转型和向下转型有很多的应用。
例如: 1:  Animal c = new Cat();   //类型提升,向上转型
            在编译时:参阅引用型变量所属类中是否有调用的方法。如果有。编译通过,没有编译失败
                    在运行时:参阅对象所属类中是否有调用方法。
            简单一句话:成员函数在多态时,编译看左边,运行看右边。
       2:  如果想要调用猫的特有方法,如何操作?
            强制将父类的引用,转成子类类型。向下转型
            Cat c = (Cat)a;
                   c.catchMouse();
           3:     在多态中,调用子类函数,子类方法必须覆盖父类中的方法,如果调用子类特有的方法,就必须向下转型了。
            这样非静态的方法可直接调用。
            在多态中,成员变量的特点:
            无论编译和运行,都参考左边(引用型变量所属的类,)

            在多态中,静态成员函数的特点:
            无论编译和运行,都参考做左边。

         
作者: 任奇    时间: 2012-1-16 15:30
据我自己的理解:向上转型 就是说 子类对象可以直接转为父类对象,就像变量一样,范围小的可以直接转为范围大的(父类对象 =  子类对象),这就是向上转型。而范围大的转为范围小的就要报错,这就必须要用到强制类型 :子类对象 = (子类)父类对象,这就是向下转型。
非静态成员调用:实例化一个对象,对象.方法名() 就OK了,当然也可以采用匿名的方法:new 对象.方法名()
仅供参考。


作者: lvwenwen88    时间: 2012-1-17 14:00
在多态中,向上转型和向下转型有很多的应用。
例如: 1:  Animal c = new Cat();   //类型提升,向上转型
            在编译时:参阅引用型变量所属类中是否有调用的方法。如果有。编译通过,没有编译失败
                    在运行时:参阅对象所属类中是否有调用方法。
            简单一句话:成员函数在多态时,编译看左边,运行看右边。
       2:  如果想要调用猫的特有方法,如何操作?
            强制将父类的引用,转成子类类型。向下转型
            Cat c = (Cat)a;
                   c.catchMouse();
           3:     在多态中,调用子类函数,子类方法必须覆盖父类中的方法,如果调用子类特有的方法,就必须向下转型了。
            这样非静态的方法可直接调用。
            在多态中,成员变量的特点:
            无论编译和运行,都参考左边(引用型变量所属的类,)

            在多态中,静态成员函数的特点:
            无论编译和运行,都参考做左边。

作者: 袁野    时间: 2012-1-19 14:12
你可以把父类的引用给子类对象,向上转换,只有父类的引用才可以有向下转化。




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