1.多态的基本概念
多态是面向对象的重要概念之一,简单地讲,多态是指一个事物在不同情况下呈现出不同的形态。
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量的方法调用,在编程时并不确定,而是在程序运行时才确定。
继承为多态做了铺垫,从同一个父类派生的多个不同子类可以被当成父类对待,可对这些不同的类型进行相同的处理,由于多态性,子类对象响应同一方法的行为是不同的。把不同的子类对象都当成父类来看,可以屏蔽不同子类对象之间的差异,写出通俗的编程,以适应需求的不断变化。
在Java中,多态性主要体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。
1)编译时多态。在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同静态确定调用相应的方法。
2)运行时多态。如果子类重写了父类的方法,此时方法调用的原则是系统根据调用该方法的实例,来决定调用哪个方法。如果子类重写了父类的方法,则运行时Java调用子类的方法。如果子类继承了父类的方法,则Java调用父类的方法。
2.多态的使用(www.xing528.com)
多态的使用分为向上转型和向下转型。
1)向上转型 子类对象既能作为自身类型使用,又可以作为其父类型使用,这种把某个对象视为其父类型的做法就是向上转型。下面是一个向上转型的程序。
向上转型,子类Man可以作为父类People类型使用。即子类转换为父类。
2)向下转型。把父类的引用向下转换为子类型引用,成为向下转型。在向下转型时,必须强制进行。例如:
Manager manager=newEmployee();
Employee employee=(Employee)manager;//父类强制类型转换为子类型
注意:多态的条件一是必须有继承,二是方法的重载。转型是在继承的基础上而言的,继承是面向对象语言中,代码重复的一种机制,通过继承,子类可以拥有父类的功能,如果父类不能满足当前子类的需求,子类可以重新父类的方法加以扩展。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。