Java多态
多态(Polymorphism)属于面向对象三大特征之一,它的前提是封装形成独立体,独立体之间存在继承关系,从而产生多态机制。多态是同一个行为具有多个不同表现形式或形态的能力。
现实中,比如我们按下 F1 键这个动作:
● 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
● 如果当前在 Word 下弹出的就是 Word 帮助;
● 如果当前在 Windows 下弹出的就是 Windows 帮助和支持。
多态就是“同一个行为”发生在“不同的对象上”会产生不同的效果。
那么在java中多态是如何体现的呢?
在java中允许这样的两种语法出现,一种是向上转型(Upcasting),一种是向下转型(Downcasting),向上转型是指子类型转换为父类型,又被称为自动类型转换,向下转型是指父类型转换为子类型,又被称为强制类型转换。请看下图:
在java语言中有这样的一个规定,无论是向上转型还是向下转型,两种类型之间必须要有继承关系,没有继承关系情况下进行向上转型或向下转型的时候编译器都会报错,这一点要死记硬背哦!
接下来我们来看一段代码:
Animal 类
public class Animal {
public void move(){
System.out.println("Animal move!");
}
}
继承Animal类的Cat类
public class Cat extends Animal{
//方法覆盖
public void move(){
System.out.println("走猫步!");
}
//子类特有
public void catchMouse(){
System.out.println("抓老鼠!");
}
}
继承Animal类的Bird类
public class Bird extends Animal{
//方法覆盖
public void move(){
System.out.println("鸟儿在飞翔!");
}
//子类特有
public void sing(){
System.out.println("鸟儿在歌唱!");
}
}
Test类
public class Test01