最近我试图用Java来解决Java中的设计问题,其中
一个孩子从父亲和一些母亲那里继承了一些属性。
例如:“Child”类必须继承一些属性/行为,例如faceCut,snoringWhileAsleep和来自“Father”类的高度以及来自“Mother”类的少数其他属性hairColor。并非所有父亲和母亲的财产都由儿童继承。
Java设计模式如何解决这个问题?
答案 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();
}
}