一、多态的概念
去完成某一个动作的时候,当不同的对象去完成时所产生的状态不同。
二、实现条件
1、必须在继承体系下。
2、子类必须要对父类的方法进行重写。
3、通过父类的引用调用重写的方法。
多态的体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法。
class Shapy {
public void drad() {
System.out.println("画图形");
}
}
class Cycle extends Shapy{
@Override
public void drad() {
System.out.println("⚪");
}
}
class Rect extends Shapy{
@Override
public void drad() {
System.out.println("矩形");
}
}
class Triangle extends Shapy{
@Override
public void drad() {
System.out.println("🔺");
}
}
//--------------------------------------------------
public class test11152 {
public static void drawMap(Shapy shapy) {
shapy.drad();
}
public static void main(String[] args) {
Cycle cycle = new Cycle();
Rect rect = new Rect();
Triangle triangle = new Triangle();
drawMap(cycle);
drawMap(rect);
drawMap(triangle);
}
}
/*运行结果
⚪
矩形
🔺*/
在上述代码中
,
分割线上方的代码是
类的实现者
编写的
,
分割线下方的代码是
类的调用者
编写的
.
当类的调用者在编写 drad
这个方法的时候
,
参数类型为
Animal (
父类
),
此时在该方法内部并
不知道
,
也不关注
当前的drad引用指向的是哪个类型(
哪个子类
)
的实例
.
此时
drawMap这个引用调用 drad方法可能会有多种不同的表现(和 drawMap 引用的实例 相关), 这种行为就称为
多态,即同一个引用,调用同一个方法,但因为引用的对象不同,所表现的行为不一样。