含义:多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。
需要条件:继承、重写和向上转型
- 继承:在多态中必须存在有继承关系的子类和父类。
- 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
- 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。
使用:父类引用指向子类对象
举例:
创建父类对象b
//父类b class Testb{ void eat() { System.out.println("吃了吗?"); } }
创建子类c并重写父类eat方法
//子类c class Testc extends Testb{ void eat() { System.out.println("吃了"); } }
创建子类d并重写父类eat方法
//子类d class Testd extends Testb { void eat() { System.out.println("没吃"); } }
创建Test测试程序
public class Test { public static void main(String[] args) { //父类引用指向子类对象 Testb b=new Testc(); func(b); } //多态(判断子类是哪个就调用哪个方法) static void func(Testb b) { if(b instanceof Testc) { Testc c=(Testc)b; c.eat(); }else if(b instanceof Testd) { Testd d=(Testd)b; d.eat(); } } }