多态下的(一定要是多态)
向上转型:相当于自动类型转换,由低类型到高类型
定义:将子类的引用转成父类的引用.注意:只是将引用进行转换,与=后面的对象无关
**向下转型:**相当于强制类型转换,由高类型到低类型
定义:将父类的引用强制转换成子类的引用.—调用子类特有的方法
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
##例子
输出下列代码结果:
public class Demo1 {
public static void main(String[] args)
{
int i=0;
Fu f=new Demo();
Demo d=new Demo();
for(f.show('A'); f.show('B')&&(i<2);f.show('C'))
{
i++;
d.show('D');
}
}
}
class Fu
{
boolean show(char a)
{
System.out.println(a);
return true;
}
}
class Demo extends Fu
{
boolean show(char a)
{
System.out.println(a);
return false;
}
}
结果为
A
B
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
分析:根据“非静态方法:编译看左边,运行看右边”,运行时看的是new Demo(),这时由于子类复写了父类的方法show(),所以调用子类的方法,结果返回false,当运行到f.show(“B”)时式子不成立了,所以跳出循环结束程序。
在这里,如果子类中没有或没有复写父类方法show(),程序就会执行父类中的show()方法,然后输出:
A
B
D
C
B
D
C
B