Java-将对象作为构造函数中的参数传递

Java-将对象作为构造函数中的参数传递,java,parameters,constructor,cannot-find-symbol,Java,Parameters,Constructor,Cannot Find Symbol,我的目标是使用一个类的实例作为另一个类的参数。我将用一个例子来描述我的问题 public class Color { public String color; public Color (String color) { this.color = color; } public Color grey = new Color("grey"); } 我的目标是构建另一个构造函数,它使用First类的实例作为参数(例如一辆汽车): 我得到错误“Java

我的目标是使用一个类的实例作为另一个类的参数。我将用一个例子来描述我的问题

public class Color {

    public String color;
    public Color (String color) {
        this.color = color;
    }
    public Color grey = new Color("grey");
}
我的目标是构建另一个构造函数,它使用First类的实例作为参数(例如一辆汽车):


我得到错误“Java找不到符号”。我做了很多尝试,但都无法运行,而且我也不完全理解我想的类的概念。

您的构造函数名和类名应该是相同的<代码>自动与
汽车
不同。换一个就行了。此外,未定义灰色的
。我相信您希望使用
Color.grey
,这意味着将其定义为
静态

public class Color {

    public String color;
    public Color (String color) {
        this.color = color;
    }
    public static Color grey = new Color("grey");
}

public class car {

    int PS;
    Color color;

    public car (int PS, Color color) {
        this.PS = PS;
        this.color = color;
    }

    public static void main (String args[]) {
        car myCar = new car(80, Color.grey);
    }
}

找不到符号
错误通常意味着这是范围问题——也就是说,哪些位在哪里可见。在您的情况下,
灰色
是在类
颜色
上定义的,但您试图从
汽车
使用它。如果您试图构建一组可重用的
Color
对象,请将
gray
static final
static
表示它属于整个类
Color
,而不是特定的颜色),并将其称为
grey
,以符合约定


然后,从主方法中,您仍然看不到
灰色
,因为它在另一个范围内。你可以通过调用
Color.GREY告诉Java在哪里可以找到它,你可以使用
carmycar=newcar(80,newcolor(“GREY”)然后阅读更多教程。
公共颜色灰色=新颜色(“灰色”)
将导致
堆栈溢出错误
,因为它是
颜色
类中的成员变量:要创建
颜色
,您需要创建
颜色
,这将创建
颜色
,这将创建
颜色
…这里有多个问题,您应该始终发布整个错误消息——在本例中,它会准确地显示未知符号的位置。谢谢您,chrylis,解释得很好。
public class Color {

    public String color;
    public Color (String color) {
        this.color = color;
    }
    public static Color grey = new Color("grey");
}

public class car {

    int PS;
    Color color;

    public car (int PS, Color color) {
        this.PS = PS;
        this.color = color;
    }

    public static void main (String args[]) {
        car myCar = new car(80, Color.grey);
    }
}