public class Car{
Car(string cvet, string dvigat){
color = cvet;
motor= dvigat
System.out.println("Новая машина создана: цвет " + color + ", двигатель " + motor)
}
String motor;
String color;
}
Мы создаём конструктор в котором используем переменные motor и color, но они ведь ещё не объявлены в коде, ибо код идёт сверху вниз и переменные объявляются только после конструктораAnonymous #3370153
5 уровень
Объясните почему это так работает
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергей
17 августа, 20:37
А вообще почитайте Шилдта - Java 2/8 там пример задания/создания и описание классов дается.
Мне там запомнилось раз и надолго. Пример по памяти какого-нибудь класса:
Class Car {
//1. переменные или поля данных
privated String motor;
privated String color;
//2. Все возможные виды конструкторов для класса Car
.....
//3. Методы, которые манипулируют данными (геттеры/сеттеры и другие)
public String getMotor() {
return this.motor
}
...
}
И я эту структуру кода запомнил - тут все просто и понятно.
Возвращаясь к вашему вопросу почему так и работает. Для кода без разницы где что находится из пунктов 1,2,3. Когда я пишу, то придерживаюсь вот этого Шилдовского примера
0
Сергей
17 августа, 20:30
На самом деле без разницы где находятся внутренние данные класса Car. Объясню.
Класс Car - это шаблон, каркас класса. У этого класса есть 2 переменных. Все.
В памяти, когда будет выделяться место для этого класса и его данных - там без разницы где в коде вы написали: в начале или конце класса, перед конструктором или после.
Видимость полей так называемых/переменных - в пределах класса. Поэтому сверху, по середине или в конце - без разницы где будут обьявлены параметры motor и color.
0
Денис Enterprise Java Developer
4 августа, 15:01
Java не вполне так работает, это не интерпретируемый язык. На момент создания экземпляра класса, приложение уже знает об этом классе все необходимое, более того, если в классе есть статические поля они уже инициализированы.
Когда ты создаёшь экземпляр класса, ты фактически наполняешь пустую, но уже существующую, оболочку, внутри конструктора. Не статические поля уже имеют значения по умолчанию, но могут быть изменены.
+2