例如,现在有三类事物:
(1)机器人:充电,工作;
(2)人:吃饭,工作,睡觉;
(3)猪:进食,睡觉。
现要求实现一个程序,可以实现三种不同事物的行为
package com.demo;
/**
* Created by Ranjx on 2018/7/22.
* 定义一个抽象类
*/
public abstract class Action {
public static final int EAT = 1;
public static final int WORK = 3;
public static final int SLEEP = 5;
public abstract void eat();
public abstract void work();
public abstract void sleep();
public void commond(int flag) {
switch (flag) {
case EAT :
this.eat();
break;
case WORK :
this.work();
break;
case SLEEP :
this.sleep();
break;
default:
break;
}
}
}
package com.demo;
/**
* Created by Ranjx on 2018/7/22.
* 机器人继承抽象类,强制覆写抽象方法
*/
public class Reboot extends Action{
@Override
public void eat() {
System.out.println("机器人充电");
}
@Override
public void work() {
System.out.println("机器人工作");
}
@Override
public void sleep() {
}
}
package com.demo;
/**
* Created by Ranjx on 2018/7/22.
* 人继承抽象类,强制覆写抽象方法
*/
public class Human extends Action {
@Override
public void eat() {
System.out.println("人吃饭");
}
@Override
public void work() {
System.out.println("人工作");
}
@Override
public void sleep() {
System.out.println("人睡觉");
}
}
package com.demo;
/**
* Created by Ranjx on 2018/7/22.
* 猪继承抽象类,强制覆写抽象方法
*/
public class Pic extends Action {
@Override
public void eat() {
System.out.println("猪吃饭");
}
@Override
public void work() {
}
@Override
public void sleep() {
System.out.println("猪睡觉");
}
}
package com.demo;
/**
* Created by Ranjx on 2018/7/22.
* 测试方法
*/
public class ActionTest {
public static void function(Action a) {
a.commond(Action.EAT);
a.commond(Action.WORK);
a.commond(Action.SLEEP);
}
public static void main(String[] args) {
function(new Reboot());
function(new Human());
function(new Pic());
}
}