如何设计Java:Child继承了父亲和一些母亲的一些属性

时间:2014-01-24 06:20:02

标签: java design-patterns

最近我试图用Java来解决Java中的设计问题,其中

  

一个孩子从父亲和一些母亲那里继承了一些属性。

例如:“Child”类必须继承一些属性/行为,例如faceCut,snoringWhileAsleep和来自“Father”类的高度以及来自“Mother”类的少数其他属性hairColor。并非所有父亲和母亲的财产都由儿童继承。

Java设计模式如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

//替代一个

public class Child implements Mother, Father {

    @Override
    public void hairColor() {
        // TODO Auto-generated method stub

    }

    @Override
    public void height() {
        // TODO Auto-generated method stub

    }

}

interface Mother {
    void hairColor();
}

interface Father {
    void height();
}

//更好的选择

abstract class Parents implements Mother, Father {
    @Override
    public void hairColor() {
        // TODO Auto-generated method stub

    }

    @Override
    public void height() {
        // TODO Auto-generated method stub

    }
}

class Child extends Parents{

}

答案 1 :(得分:0)

你基本上是在java中引入了多重继承的问题,设计不可能
我看到已经使用接口建议了两个解决方案 另一种解决方案是使用委派。意思是,父亲和母亲是孩子对象中的字段,并且您希望的每种方法都可以继承"他们被委托给他们,即从这些领域激活。

public class Human {
String hairColor;
boolean snoreWhileAsleep;

public String  returnHairColor() {
    return hairColor;
}

public boolean isSnoring() {
    return snoreWhileAsleep;
}

}

public class Child extends Human{
    Human father;
    Human mother;


public String  returnHairColor() {
    return mother.returnHairColor();
}

public boolean isSnoring() {
    return father.isSnoring();
}

}