您的位置:首页 > 编程语言 > Java开发

Java基础复习:初识多态

2013-05-11 12:08 393 查看
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方法也不起作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: