一个功能接口,产生若干第一层选择类,这些选择类作为参数形成若干第一层实现类,第一层实现类被继承可以生成若干第二层选择类
第一步:功能接口(吃的方法)
interface Eat { //eat接口eating方法
void eating();
}
第二步:第一层选择类(主食,意思是大家都需要的,不止一种)
public static class ZhuShi1 implements Eat { // 主食1
@Override
public void eating() {
System.out.println("吃米饭");
}
}
public static class ZhuShi2 implements Eat { // 主食2
@Override
public void eating() {
System.out.println("吃馒头");
}
}
第三步:第一层实现类(一个人必须要有主食,主食不只有米饭,作为自选参数传入)
public static abstract class People implements Eat { //创建一个人
Eat eat;
public People(Eat eat) {
this.eat = eat;
}
@Override
public void eating() {
eat.eating();
}
}
第四步:第二层选择类(继承第一层实现类,同时规定了第二层的选择)
public static class Lunch extends People {
public Lunch(Eat eat) {
super(eat);
}
@Override
public void eating() {
super.eating();
System.out.println("中午吃一碗");
}
}
public static class Dinner extends People { //
public Dinner(Eat eat) {
super(eat);
}
@Override
public void eating() {
super.eating();
System.out.println("晚上吃两碗");
}
}
第五步:main测试--创建主食,将主食作为参数、用第一层实现类去选择第二层选择类进行操作
public static void main(String[] args) {
Eat eat = new ZhuShi(); //实例化主食
People people = new Lunch(eat);
people.eating();
}