多态,就是指,父类引用可以指向多个子类,并依据指向子类的不同,而调用不同子类的同一方法(只能是从父类继承过来的),如下:
package test;
class A
{
public void f()
{
System.out.println("111");
}
}
class C extends A
{
;
}
class B extends A
{
public void f()
{
System.out.println("222"); //方法重载
}
}
public class duotai {
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new C();
a.f();
a = new B(); //改变父类引用指向的对象
a.f(); //都是f() 即我上面说的同一方法
}
}
输出为:111
222
同样都是a.f(); 输出却不同,因为a虽然是父类对象,但是接受的实质上是两个不同子类,所以本质上a是两个不同子类.这种将子类对象赋给父类的操作就是多态的一种体现,这种操作也叫向上转型;
另外 B b= (b)a; 子类对象给父类,只有在a实质上是一个子类的时候才可以,并且要强制转换;
可以这么理解 假设父类是人 子类是小明,我们可以说小明是人,而不能说人是小明,因为人太泛了, 只有在特定的环境下,我们口中的人就是小明的时候 才可以。