。。。
必要条件:<1>要有继承
<2>要有重写
<3>父类的应用指向子类的对象(向上转型)
说说第三点吧。难理解。
多态,举个例子吧,例如打印机,它可以有黑白打印机,彩色打印机,3d打印机,功能繁多的打印机就可以看做打印机的子类.
Marking a = new csMarking;//(marking意为打印机)
为什么要有以上的行为呢? 因为子类相对于父类,子类的功能更强大,属性更为独特。所以可以通过父类的应用指向子类的对象这种方法来实现更强大的功能。
实例代码如下:
//父类
public class Father{
//父类有一个打孩子方法
public void hitChild(){
}
}
//子类1
public class Son1 extends Father{
//重写父类打孩子方法
public void hitChild(){
System.out.println("呜呜呜。。。");
}
}
//子类2
public class Son2 extends Father{
//重写父类打孩子方法
public void hitChild(){
System.out.println("略略略。。。");
}
}
//子类3
public class Son3 extends Father{
//重写父类打孩子方法
public void hitChild(){
System.out.println("跑路喽。。。");
}
}
//测试类
public class Test{
public static void main(String args[]){
Father father;
father = new Son1();
father.hitChild();
father = new Son2();
father.hitChild();
father = new Son3();
father.hitChild();
}
}
可以发现,父类的调用出现了三种不同的结果
注意: 只有在重写的时候,父类可以调用,在重载的时候,因为参数变了,不可调用。