本帖最后由 廉伟杰 于 2014-1-21 20:00 编辑
向上转型(子类→父类):(自动完成的)
即 父类名字 父类对象 = 子类实例
向上转型(父类→子类):(强制完成)
即 子类名称 子类对象 = (父类名称)父类实例
多态时方法的调用
当一个引用类型的变量若声明为父类的类型,但实际上引用的是子类的对象(多态情况):
此时该变量不能再访问子类中自己特有的字段和方法;
若子类覆写了父类的方法,那么此时通过变量访问到的方法,实际上是子类的方法;
[code]<span style="font-size:10px;">class Car
{
public void show()
{
System.out.println("我是一般的车");
}
}
class BMW extends Car
{
//覆写
public void show()
{
System.out.println("我是宝马车");
}
public void paoMM()
{
System.out.println("我在泡妹妹");
}
}
class BMWDemo
{
public static void main(String[] args)
{
Car c = new BMW();//多态
c.show();//show到底是谁的? c是BMW的
//c.paoMM();//调用不到,c调用不到c实际类型里的方法
if(c instanceof BMW)//检验是不是宝马
{
BMW b =(BMW)c;
b.paoMM();
}
}
}这个例子能很好的说明多态的应用
|