(1)概念
多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。继承使得子类可以继承父类的特征。多态意味着父类可以应用子类的对象。
(2)特点
1.前提:是继承,有方法重写。
2.父类引用指向子类对象。
3.多态中需要将子类对象的引用赋给父类对象,使得子类引用能够调用父类和子类的方法。
(3)优点
1.多态可以让我们不用关心某个对象到底具体是什么类型,就可以使用该对象的某些方法
2.提高了程序的可扩展性和可维护性
(4)使用
前提:多态对象把自己视作父类;
1.成员变量: 使用的是父类的
2.成员方法: 由于存在重写现象,所以使用的是子类的
3.静态成员: 随着类的加载而加载,谁调用就返回谁的
(5)样例代码
package duotai;
/*创建父类*/
class shn{
public void playgame(){
System.out.println("play lol?");
}
}
/*创建子类1*/
class xbl extends shn{
public void playgame(){
System.out.println("play yaunshen?");
}
}
/*创建子类2*/
class jzc extends shn{
public void playgame(){
System.out.println("play 4399?");
}
}
public class example {
public static void main(String[] args) {
shn a = new shn();
xbl b = new xbl();
jzc c = new jzc();
a.playgame();
b.playgame();
c.playgame();
shn d = new xbl();
shn e = new jzc();
d.playgame();/*父类shn使用子类xbl的方法*/
e.playgame();/*父类shn使用子类jzc的方法*/
}
}
(6)转型
A.向上转型:
这可以减少重复代码,使代码变得简介,提高系统拓展性。
在引用时,子类的单独定义方法会丢失;
定义时:父类 变量名 = new 子类();
B.向下转型:
子类引用不能指向父类对象,变量名 子类 = new 父类();(这是不行的,会报错)。
通常先向上后向下,这是就不会报错;