什么是多态?
在Java中,一个对象往往有两种类型,一种是编译时类型,一种是运行时类型,如果一个对象这两个类型不相同时,就发生了所谓的多态 。
A o = new A();
(第一个A)A - 编译时类型, (第二个A)A - 运行时类型。
父类变量 = 子类的对象。
public class Test {
public static void main(String[] args) {
A o = new B();
//编译时对象o体现的是A类型的特征
//运行时对象o体现的是B类型的特征
o.method();
}
private static class A{
public void method(){
System.out.println("父类的Method方法");
}
}
private static class B extends A{
@Override
public void method() {
System.out.println("子类重写的Method方法");
}
public void sleep(){
System.out.println("睡觉的方法");
}
}
}
运行程序,控制台打印的是(子类重写的Method方法);
运用场景:
多态主要是在程序设计时,可以让程序保持很好的拓展性和灵活性。
比如,在Tomcat设计时,为了可以更好调用后续开发者创建的Servlet,就需要采用多态的方式来设计,通过反射的方式创建开发者的Servlet对象,然后再用HttpServlet父类接收对象,执行相应的方法(doPost、doGet),以此来执行相关的业务逻辑代码,这里就用到了多态,可以让几十年前设计的Tomcat,正确的调用到后面开发者创建的Servlet。