Java基础复习:初识多态

来源:互联网 发布:c语言实战1200例 pdf 编辑:程序博客网 时间:2024/06/05 05:47
A a = new B();

    假设满足一下条件:

  • A是一个类,B是A的一个子类
  • A是一个接口,B或它的其中一个父接口实现A

/** * 父类:汽车 */class Car{public String name = "NoBrandCar";public void show(){System.out.println("This is a noraml car");}}/** * 子类:宝马 */class BMW extends Car{public String name = "BMW";public String color = "white";public void show(){System.out.println("It's BMW");}public void say(){System.out.println("It's beautiful");}}public class PolymorphismDemo {public static void main(String[] args) {/** * 编译类型:Car * 运行类型:BMW * 我可以把实际生产的BMW在编译时只当作Car来对待 */Car c = new BMW();//最简单的多态形式c.show();//c.say();//无法访问,编译时只是将其当作车,其并没有say方法,那么如何调用呢?//此时利用 instanceof 进行类型判断,并强转if(c instanceof BMW){BMW b = (BMW)c;b.say();}}}

使用多态的好处:

把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。


值得注意的是:

多态对于静态方法不起作用,因为他们属于前期绑定;由于无法扩展final方法,因此多态对于final方法也不起作用。