В этих двух классах нет наследования,
почему в классе Solution создается объект другого класса?
Почему при выводе в консоль нестатические переменные класса Planet принимают значение переменных нового объекта earth (name = earth.name)?
Roman
29 уровень
Объясните
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Григорий
3 марта, 01:46
Привет!
Анастасия все правильно объяснила но мб попробую объяснить подробнее:
у нас есть два класса
1) класс "public class Solution" - в нем открыт поток main который говорит программе что надо запускать программу с этого класса
2) класс "Planet" - это класс позволяющий создавать объект у которого могут быть переменные или характеристики которые описаны в классе:
name - имя планеты, age - возраст планеты, speed - скорость планеты, area - площадь планеты
мы можем заполнить все характеристики планеты, можем заполнить только какие то из них (те которые мы не заполним будут заполнены по умолчанию, например 0, null), но не можем вписать новые если их нет в классе "Planet".
так же в классе мы создаем метод "public void printInformation()" - который выводит информацию в консоль о планете основываясь на данных которые мы создали.
В главном классе "Solution" мы создаем объекты в нашем случае планеты, нашим конструктором объектов является класс "Planet". В начале мы должны создать объект - новую планету. Если у нашего конструктора переменные статические то они как бы могут быть только общими т.е. мы не можем создать разные объекты (планеты) с разными данными, а если у нас переменные объекты не статические то они у каждого объекта свои (индивидуальные), по этому в задаче надо было сделать все переменные не статическими.
чтобы создать новую планеты мы пишем:
Planet earth = new Planet(); - говорим программе что мы хотим создать новый (new) объект с именем earth, с помощью класса Planet. Т.е. наш новый объект с именем earth будет планетой.
далее если мы хотим чтобы у планеты earth были свои характеристики
earth.name = "Земля"; - мы пишем что у планеты (так как мы ранее при создании указали что earth это планета, повторно мы можем это не писать) earth мы хотим задать Имя и пишем что у earth (оператор точка - позволяет указать какую переменную мы будем выбирать) будет name (имя) Земля.
earth.age = 4_540_000_000L;
earth.speed = 170_218;
earth.area = 510_072_000;
0
Григорий
3 марта, 01:48
все остальные данные мы заполняем по аналогии.
в классе Planet - мы указали уточнение что у каждой переменной может быть только определенный тип данных, например name - String (строка) и тд
а последним пунктом мы вызываем метод который задали в классе Planet, метод public void printInformation() - в нем мы написали чтобы при вызове этого метода (скобки пустые по этому при вызове метода мы не должны ничего заполнять, никакие данные) у нас в консоль/на экран, будет выводиться
System.out.println("Имя планеты: " + name + ".");
System.out.println("Возраст: " + age + " лет.");
System.out.println("Орбитальная скорость: " + speed + " км/ч.");
System.out.println("Общая площадь: " + area + " кв. км.");
использую ранее заполненные данные.
Очень надеюсь что тебе будет не лень все это читать, Что все описанное будет понятным и что я не допустил ошибок. Если ошибки есть, наверное более мудрые товарищи не будут судить строго, а помогут поправить не точности в ответе
0
Анастасия Гороховец
16 февраля, 11:42
В классе Solution в методе main вызывается конструктор класса Planet и создает новый объект типа Planet. Ссылка на этот объект записывается в переменную earth.
Все переменные класса Planet нестатические, а значит привязаны к конкретному объекту класса (т.е. earth). Переменные объекта публичные, так что мы можем обращаться к ним напрямую, что собственно и делаем. На примере earth.age - обращается к переменной age объекта earth и присваиваем ей значение 4_540_000_000L.
0