多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。
程序实例:
有个演员类,子类为歌手类和舞蹈类,导演类进行action方法操作子类。
演员类
package SpringFestival;
/**
* 演员类
* @author Administrator
*
*/
public abstract class Actor {//当一个类为抽象类时不可以实例化 即不可以 Actor 成龙=new Actor();abstract为抽象的意思
private String name;
public Actor() {
}
public Actor(String name) {
setName(name);
}
public void perform() {
System.out.println(name+"演员正在表演");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
舞蹈类
package SpringFestival;
/**
* 舞蹈类
* @author Administrator
*
*/
public class Dancer extends Actor {
public Dancer() {
super();
// TODO Auto-generated constructor stub
}
public Dancer(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void perform() {
// TODO Auto-generated method stub
System.out.println(getName()+"正在跳舞");
}
}
歌手类
package SpringFestival;
/**
* 歌手类
* @author Administrator
*
*/
public class Singer extends Actor {
public Singer() {
super();
// TODO Auto-generated constructor stub
}
public Singer(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void perform() {
// TODO Auto-generated method stub
System.out.println("歌手正在唱歌"+getName());
}
}
导演类
package SpringFestival;
/**
* 导演类
* @author Administrator
*
*/
public class Directer {
/**
* 导演的action方法
* @param actor
*/
public void action(Actor actor) {
actor.perform();
}
}
主方法
package SpringFestival;
public class ChunwanTest {
public static void main(String[] args) {
Directer 冯小刚=new Directer();
Dancer 杨丽萍=new Dancer("杨丽萍");
Singer 邓丽君=new Singer("邓丽君");
冯小刚.action(邓丽君);
冯小刚.action(杨丽萍);
}
}