Java - передать объект в качестве параметра в конструктор

Моя задача - использовать экземпляр класса в качестве параметра для другого класса. Я опишу мою проблему на примере.

public class Color {

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

Моя цель - создать еще один конструктор, который использует экземпляры моего первого класса в качестве параметров (например, автомобиль):

public class car {

    int PS;
    Color color;

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

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

Я получаю ошибку "Java не может найти символ". Я много пробовал, но не могу заставить его работать, и я не совсем понимаю концепции классов, я думаю.

2 ответа

Решение

Ваше имя конструктора и имя вашего класса должны совпадать. Auto это не то же самое, что car, Просто поменяй одну из них. Также grey не определено. Я верю, что вы хотите использовать Color.grey что означает определение его как static,

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);
    }
}

cannot find symbol Ошибка обычно означает, что это проблема с областью видимости - то есть, какие биты видны где. В твоем случае, grey определяется по классуColor, но вы пытаетесь использовать его из Car, Если вы пытаетесь создать набор многоразового использования Color объекты, сделать greystatic final (static означает, что он принадлежит всему классуColor а не к конкретному цвету), и назовите его GREY чтобы соответствовать соглашениям.

Тогда из вашего основного метода вы все равно не увидите GREY потому что это внутри другой сферы. Вы можете сказать Java, где его найти, вызвав его Color.GREY,

Другие вопросы по тегам