Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/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_Oop - Fatal编程技术网

在Java中创建继承/组合结构

在Java中创建继承/组合结构,java,oop,Java,Oop,我正在寻找有关以下情况的建议。我认为继承结构将有助于减少同步代码。关于创建此模型的理想方法的任何建议,或者给我举一个类似的例子 模型如下所示 有好几位祖父母。祖父母可以有几个父母,同样地,父母也可以有几个孩子。似乎有两个“继承”结构,一个用于父/子,另一个用于“非合并陈述” “总损益表”和“母公司损益表”是其子公司及其自身损益表的累计损益表。每当“我的收入计量表”发生任何变化时,它们必须同步 现在,我已经创建了一个“类IS(IncomeStatement)”,它具有公共属性,没有任何继承,并且围

我正在寻找有关以下情况的建议。我认为继承结构将有助于减少同步代码。关于创建此模型的理想方法的任何建议,或者给我举一个类似的例子

模型如下所示

有好几位祖父母。祖父母可以有几个父母,同样地,父母也可以有几个孩子。似乎有两个“继承”结构,一个用于父/子,另一个用于“非合并陈述”

“总损益表”和“母公司损益表”是其子公司及其自身损益表的累计损益表。每当“我的收入计量表”发生任何变化时,它们必须同步

现在,我已经创建了一个“类IS(IncomeStatement)”,它具有公共属性,没有任何继承,并且围绕每个级别的IncomeStatement的更改编写了代码

class GrandParent {
   ObjectIS myIncomeStatement;
   ObjectIS grandIncomeStatement;
}
class Parent {
   ObjectIS myIncomeStatement;
   ObjectIS parentIncomeStatement;
}
class Child {
   ObjectIS myIncomeStatement;
}

另一种方法是让
和孩子列表

public class Person {
    List<Person> children;
    ObjectIS myIncomeStatement;
    ObjectIS familyIncomeStatement;

    public ObjectIS getFamilyIncomeStatement() {
        ObjectIS is = new ObjectIS();
        for(Person p: children) {
            is.income += p.familyIncomeStatement.income;
        }
        is.income += this.myIncomeStatement.income;
        return is;
    }
}

// sample objectIS class
public class ObjectIS {
    private int income;
}
公共类人物{
列出儿童名单;
目的:计量指标;
目的家庭责任陈述;
公共目标GetFamilyComeStatement(){
ObjectIS is=新ObjectIS();
个人(p:儿童){
is.income+=p.familyIncomeStatement.income;
}
is.income+=此.myincomestation.income;
回报是;
}
}
//示例对象类
公共类目标{
私人收入;
}

编辑:因此,您可能有一种递归的方法来计算familyIncome(显然,您将有一个更严格的访问控制,适当的getter/setter)

另一种方法是让
Person
和它的孩子列表

public class Person {
    List<Person> children;
    ObjectIS myIncomeStatement;
    ObjectIS familyIncomeStatement;

    public ObjectIS getFamilyIncomeStatement() {
        ObjectIS is = new ObjectIS();
        for(Person p: children) {
            is.income += p.familyIncomeStatement.income;
        }
        is.income += this.myIncomeStatement.income;
        return is;
    }
}

// sample objectIS class
public class ObjectIS {
    private int income;
}
公共类人物{
列出儿童名单;
目的:计量指标;
目的家庭责任陈述;
公共目标GetFamilyComeStatement(){
ObjectIS is=新ObjectIS();
个人(p:儿童){
is.income+=p.familyIncomeStatement.income;
}
is.income+=此.myincomestation.income;
回报是;
}
}
//示例对象类
公共类目标{
私人收入;
}

编辑:因此您可能有一种递归方法来计算familyIncome(显然,您将有一个更严格的访问控制,适当的getter/setter)

而不是使用ObjectIs,您可以始终使用多态性,然后晚些时候使用操作符的
实例。您可以检查不需要的btw,因为动态绑定将调用右函数。Java中没有这样的“类”声明,它应该是小写的“类…”@JorgeCampos。编辑问题。你真的需要为祖父母、父母和孩子分别上课吗?这很不自然——毕竟,在自然语言中,祖父母也是父母和孩子。谢谢@JohnBollinger。实际上,我已经在模型中这样做了。我试图找到一种更好的方法来映射累积和个人损益表,这样我就可以用递归逻辑将它们保存在sych中。而不是使用ObjectIs,您可以始终使用多态性,然后晚些时候使用
操作符的
实例。您可以检查不需要的btw,因为动态绑定将调用右函数。Java中没有这样的“类”声明,它应该是小写的“类…”@JorgeCampos。编辑问题。你真的需要为祖父母、父母和孩子分别上课吗?这很不自然——毕竟,在自然语言中,祖父母也是父母和孩子。谢谢@JohnBollinger。实际上,我已经在模型中这样做了。我正试图找到一种更好的方法来映射累积和个人损益表,这样我就可以用递归逻辑将它们保存在sych中。谢谢@ajc。这会奏效的。有没有一种方法可以对保持关联的家庭或累积损益表进行建模(随着子公司损益表及其自身损益表的变化。若要,请编写一个递归逻辑来同步损益表。谢谢@ajc。这将起作用。是否有方法对保持关联的家庭或累积损益表进行建模(随着子损益表及其自身损益表的变化。若要,请编写递归逻辑以同步损益表。