关于面向对象之接口,两用沙发

已知床具有让人躺下睡觉的功能,其属性有容量(容纳睡觉的人数),沙发具
有让人坐下休息的功能,其属性有容量(容纳坐下的人数)。两用沙发则同时具有
睡觉和坐下的功能。
现有一个家庭,有一个单人床,一个双人床,两个单人沙发,一个两用沙发
(折叠时是沙发,可坐三人;打开时是个双人床)。计算这个家里可容纳多少人睡
觉,以及可让多少人坐下?
测试数据如下

publicclassMainApp{//除在类名后加学号外,禁上修改其它任何代码!!!
publicstaticvoidmain(String[]args){
SofaBedsofaBed=newSofaBed();
SleepSpacebed[]=newSleepSpace[3];
bed[0]=newBed(1);//单人床
bed[1]=newBed(2);//双人床
bed[2]=sofaBed;//两用沙发可当床
SeatSpacesofa[]=newSeatSpace[3];
sofa[0]=newSofa(1);//单人沙发
sofa[1]=newSofa(2);//双人沙发
sofa[2]=sofaBed;//两用沙发
//统计床位数
intbedCapacity=0;
for(inti=0;i<bed.length;i++){
bedCapacity+=bed[i].getSleepCapacity();
}
//统计座位数
intsofaCapacity=0;
for(inti=0;i<sofa.length;i++){
sofaCapacity+=sofa[i].getSeatCapacity();
}
System.out.println("床位数:"+bedCapacity);
System.out.println("座位数:"+sofaCapacity);
}
}
输出结果:
床位数:5
座位数:6

随便写了下,有不对的请见谅
床类:

/*
 * 床 具有睡觉功能
 */
public class Bed implements SleepSpace {

    //单双人床
    private int num;

    public Bed(int num) {
        this.num = num;
    }

    //单人床1人,双人床2人
    public int getSleepCapacity() {
        return num;
    }

}

两用沙发类:

/**
 * 两用沙发,具有睡觉和坐下的功能
 */
public class Sleep implements SleepSpace,SeatSpace{

    //座位数为3
    public int getSeatCapacity() {
        return 3;
    }

    //床位数为2
    public int getSleepCapacity() {
        return 2;
    }
}

沙发类:

/**
 * 沙发,具有坐下的功能
 */
public class Sofa implements SeatSpace {

    //单双人沙发
    private int num;

    public Sofa(int num) {
        this.num = num;
    }

    //单人沙发1人,双人沙发2人(双人沙发题目中没有说明是否具备睡觉功能,这里只考虑坐下)
    public int getSeatCapacity() {
        return num;
    }
}

坐下功能接口:

public interface SeatSpace {

    int getSeatCapacity();
}

睡觉功能接口:

public interface SleepSpace{

    int getSleepCapacity();
}

MainApp:

public class MainApp{
    public static void main(String[]args){
        Sleep sofaBed =new Sleep();
        SleepSpace bed[]=new SleepSpace[3];
        bed[0]=new Bed(1);//单人床
        bed[1]=new Bed(2);//双人床
        bed[2]=sofaBed;//两用沙发可当床
        SeatSpace sofa[]=new SeatSpace[3];
        sofa[0]=new Sofa(1);//单人沙发
        sofa[1]=new Sofa(1);//单人沙发,根据题目是两个单人沙发
//        sofa[1]=new Sofa(2);//双人沙发
        sofa[2]=sofaBed;//两用沙发
//统计床位数
        int bedCapacity=0;
        for(int i=0;i<bed.length;i++){
            bedCapacity+=bed[i].getSleepCapacity();
        }
//统计座位数
        int sofaCapacity=0;
        for(int i=0;i<sofa.length;i++){
            sofaCapacity+=sofa[i].getSeatCapacity();
        }
        System.out.println("床位数:"+bedCapacity);
        System.out.println("座位数:"+sofaCapacity);
    }
}

不就床是父类.然后三个子类床继承嘛,类中两个属性睡觉人数和休息人数.
单人床就是 sleep=1 sit=0
双人床就是 sleep=2 sit=0
两用沙发就是 sleep=2 sit=3
各实例化以后对应属性相加

这是个数学问题!


interface SleepSpace {
    public int getSleepCapacity();
}

interface SeatSpace {
    public int getSeatCapacity();
}

class SofaBed implements SeatSpace, SleepSpace {
    int seatNum;
    int sleepNum;

    public SofaBed() {
        this.seatNum = 3;
        this.sleepNum = 2;
    }

    @Override
    public int getSleepCapacity() {
        return this.sleepNum;
    }

    @Override
    public int getSeatCapacity() {
        return this.seatNum;
    }
}

class Bed implements SleepSpace {
    private int sleepNum;

    public Bed(int sleepNum) {
        this.sleepNum = sleepNum;
    }

    @Override
    public int getSleepCapacity() {
        return this.sleepNum;
    }
}

class Sofa implements SeatSpace {
    private int seatNum;

    public Sofa(int seatNum) {
        this.seatNum = seatNum;
    }

    @Override
    public int getSeatCapacity() {
        return this.seatNum;
    }
}

public class MainApp {// 除在类名后加学号外,禁上修改其它任何代码!!!
    public static void main(String[] args) {
        SofaBed sofaBed = new SofaBed();
        SleepSpace bed[] = new SleepSpace[3];
        bed[0] = new Bed(1);// 单人床
        bed[1] = new Bed(2);// 双人床
        bed[2] = sofaBed;// 两用沙发可当床
        SeatSpace sofa[] = new SeatSpace[3];
        sofa[0] = new Sofa(1);// 单人沙发
        sofa[1] = new Sofa(2);// 双人沙发
        sofa[2] = sofaBed;// 两用沙发
        // 统计床位数
        int bedCapacity = 0;
        for (int i = 0; i < bed.length; i++) {
            bedCapacity += bed[i].getSleepCapacity();
        }
        // 统计座位数
        int sofaCapacity = 0;
        for (int i = 0; i < sofa.length; i++) {
            sofaCapacity += sofa[i].getSeatCapacity();
        }
        System.out.println("床位数:" + bedCapacity);
        System.out.println("座位数:" + sofaCapacity);
    }
}