首页 > 解决方案 > 类作为另一个类中的实例字段

问题描述

我曾尝试向 google 和 youtube 寻求答案,并研究了各种可能性,例如嵌套类、内部类和本地内部类。他们似乎没有提供我正在寻找的答案。

我正在关注一个在线程序和我们必须制作地毯成本计算器的练习之一。我们乘以地板的宽度和长度,然后乘以地毯成本。

为此,我们被指示创建 3 个类。

“地板”类并计算地板的面积:

public class Floor {

    private double length;
    private double width;

    public Floor(double width, double length) {

        this.width = width;
        this.length = length;
    }

    public double getArea() {
        return this.width * this.length;
    }
}

“地毯”类,它包含地毯的成本:

public class Carpet {

    private double cost;

    public Carpet(double cost) {
        this.cost = cost;
    }

    public double getCost() {
        return this.cost;
    }
}

“计算器”类,它将两个类方法一起制定以产生成本

public class Calculator {

    private Floor floor;
    private Carpet carpet;

    public Calculator(Floor floor, Carpet carpet) {
        this.floor = floor;
        this.carpet = carpet;

    }

    public double getTotalCost() {
        return floor.getArea() * carpet.getCost();
    }
}

我不明白的是,在计算器类中,我们创建了 2 个实例字段,称为:

private Floor floor;

Private Carpet carpet;

因此 2 个类已成为另一个类中的实例字段。我真的不明白它是如何工作的或这里发生了什么。我真的很想了解,因为我想学习。我将非常感谢任何有助于此过程的解释。

标签: java

解决方案


没有什么难的。当您创建 Calculator 的实例时,您将 Carpet 和 Floor 对象传递给 Calculator 的构造函数,如下所示:

Floor floor1 = new Floor(100, 100);
Carpet carpet1 = new Carpet(1000);

然后将这两个对象传递给计算器:

Calculator calculator = new Calculator(floor1, carpet1);

现在在 Calculator 类中,您可以访问 Floor 和 Carpet 的实例方法,例如 floor.getArea() 或 carpet.getCost(),您可以计算总成本。这两个私有字段可让您在本课程的每个地方使用您的地板和地毯对象。您不必在每个方法中都编写 new Floor(100, 100) 和 new Carpet(1000) 。你也遵循封装规则。

如果您不喜欢在这里创建私有字段,您可以在计算器中使用静态方法,如下所示:

public class Calculator {

public static double getTotalCost(Floor floor, Calculator calculator) {
    return floor.getArea() * carpet.getCost();
}

并从其他类调用它:

double totalCost = Calculator.getTotalCost(floor1, carpet1);

推荐阅读