Java 我想确认我是如何理解两个对象之间的紧密耦合的

Java 我想确认我是如何理解两个对象之间的紧密耦合的,java,dependency-injection,Java,Dependency Injection,以下代码是否意味着所有车辆物体将始终有6个垃圾发动机?因为vehicle类与引擎紧密耦合,我们总是将其构造为vehicle对象的一部分 public class Vehicle { public void crankIgnition(){ Engine sixLiterEngine = new Engine("6 Liter Engine"); sixLiterEngine.startEngine(); System.out.printl

以下代码是否意味着所有车辆物体将始终有6个垃圾发动机?因为vehicle类与引擎紧密耦合,我们总是将其构造为vehicle对象的一部分

public class Vehicle {

    public void crankIgnition(){
        Engine sixLiterEngine = new Engine("6 Liter Engine");
        sixLiterEngine.startEngine();
        System.out.println("Vehicle is running");
    }
}
你问:

以下代码是否意味着所有车辆物体将始终有6个垃圾发动机

否,此代码表示车辆对象将没有发动机。请注意,您在构造函数中声明了引擎变量,因此它对构造函数的作用域非常有限,实际上只存在于构造函数中。一旦建造结束,车辆将没有发动机,什么也没有

也许你在问这种情况:

public class Vehicle {
    private Engine;

    public void crankIgnition(){
        engine = new Engine("6 Liter Engine");
        engine.startEngine();
        System.out.println("Vehicle is running");
    }
}

在这种情况下,是的,车辆与发动机紧密耦合。

您的意思是在类级别定义一个名为Engine right的成员变量?然后在曲柄点火法中使用它,对吗?@Tazo:如果没有字段,您的车辆类别就没有状态。我的意思是,您当前的代码不是任何有用的示例。它是否仅与引擎紧密耦合?还是你例子中的6升发动机?@Tazo:没有6升发动机。相反,您需要一个Engine类的实例,其构造函数参数字符串表示某些内容。好的,但应用程序中所有车辆对象的实例是否总是一个?或者每个车辆对象将包含其自己的引擎实例?
public class Vehicle {
    private Engine;

    public void crankIgnition(){
        engine = new Engine("6 Liter Engine");
        engine.startEngine();
        System.out.println("Vehicle is running");
    }
}