例如,現在有三類事物:
(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());
}
}