代码实现:
1.首先把行为抽象为一个接口
Action.java
package cn.gf.action;
public interface Action {
//抽象出行为方法
public void action();
}
2.其次用具体的行为实现接口和接口中的方法
坐下的:Sit.java
package cn.gf.action;
public class Sit implements Action{
@Override
public void action() {
// TODO Auto-generated method stub
System.out.println("我乖乖滴坐下来。。。");
}
}
跳火圈的:jump.java
package cn.gf.action;
public class jump implements Action{
@Override
public void action() {
// TODO Auto-generated method stub
System.out.println("我勇敢滴跳过了火圈。。。");
}
}
3.然后把动物类抽象出来形成一个抽象类
Animal.java
package cn.gf.Animal;
import cn.gf.action.Action;
public abstract class Animal {
//动物拥有行为的属性
public Action act;
//动物都具有某种行为的能力(方法)
public abstract void doAction();
public Action getAct() {
return act;
}
public void setAct(Action act) {
this.act = act;
}
}
4.最后用具体的实体类继承动物类
Tiger.java
package cn.gf.Animal;
public class Tiger extends Animal{
@Override
public void doAction() {
// TODO Auto-generated method stub
System.out.println("我是跳跳虎");
act.action();
}
}
Cat.java
package cn.gf.Animal;
public class Cat extends Animal{
@Override
public void doAction() {
// TODO Auto-generated method stub
System.out.println("我是汤姆猫。。");
act.action();
}
}
Test.java
import cn.gf.Animal.Animal;
import cn.gf.Animal.Cat;
import cn.gf.Animal.Tiger;
import cn.gf.action.Action;
import cn.gf.action.Sit;
import cn.gf.action.jump;
public class Test {
public static void main(String[] args) {
Action jump = new jump();
Action sit = new Sit();
Animal tiger = new Tiger();
tiger.setAct(jump);
tiger.doAction();
System.out.println("***********************");
Animal cat = new Cat();
cat.setAct(sit);
cat.doAction();
}
}
Console