Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何Java设计:孩子从父亲和母亲那里继承了一些属性_Java_Design Patterns - Fatal编程技术网

如何Java设计:孩子从父亲和母亲那里继承了一些属性

如何Java设计:孩子从父亲和母亲那里继承了一些属性,java,design-patterns,Java,Design Patterns,最近,我试图用Java解决一个场景的设计问题,其中 孩子从父亲和母亲那里继承了一些财产 例如:“Child”类必须从“父”类继承一些属性/行为,如faceCut、snoringWhileAsleep和height,从“母”类继承一些其他属性hairColor。并非父亲和母亲的所有财产都由子女继承 Java设计模式如何解决这个问题 //备选方案一 public class Child implements Mother, Father { @Override public voi

最近,我试图用Java解决一个场景的设计问题,其中

孩子从父亲和母亲那里继承了一些财产

例如:“Child”类必须从“父”类继承一些属性/行为,如faceCut、snoringWhileAsleep和height,从“母”类继承一些其他属性hairColor。并非父亲和母亲的所有财产都由子女继承

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

//备选方案一

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{

}

您基本上是在介绍java中的多重继承问题,这在设计上是不可能的 我发现有两种解决方案已经建议使用接口。
另一种解决方案是使用委派。也就是说,父对象和母对象是子对象中的字段,您希望从它们“继承”的每个方法都被委托给它们,即从这些字段激活

公共类人员{
弦发色;
布尔snorewhilesleep;
公共字符串returnHairColor(){
回发色;
}
公共布尔isSnoring(){
睡觉时回鼾;
}
}
公共类子类扩展了人类{
人类父亲;
人类母亲;
公共字符串returnHairColor(){
return mother.returnHairColor();
}
公共布尔isSnoring(){
返回父;
}
}

多重继承?不支持它是一个设计决定。有三种解决方案(通常更好):接口<代码>如果可编辑,
不可编辑
可编辑
。让子类构造函数同时接受父类和母类。遗传自你母亲或父亲的遗传特征基本上是随机的。在某些情况下,这种特质来自父母双方。唯一总是(即所有儿童)完全来自父亲或母亲的特征是那些涉及Y染色体的特征;i、 它们只影响男性儿童。在UML术语中,这种“设计”与其说是类图,不如说是一个对象图。因此,虽然这个问题可能是一个有用的练习,但它与现实无关。我想我是在说马拉夫说的话。。。