Правильное решение закомментировал.
Вопрос по второму решению.
Почему не работает конструкция с "this"?
По идее, ведь это отсыл к переменной applesPrice класса Apple. Или нет?
package com.javarush.task.task04.task0402;
/*
Цена яблок
*/
public class Solution {
public static void main(String[] args) {
Apple apple = new Apple();
apple.addPrice(50);
Apple apple2 = new Apple();
apple2.addPrice(100);
System.out.println("Стоимость яблок " + Apple.applesPrice);
}
public static class Apple {
public static int applesPrice = 0;
public static void addPrice(int applesPrice) {
//Apple.applesPrice += applesPrice;
this.applesPrice += applesPrice;
}
}
}
public static void addPrice(int applesPrice)
вы не можете обратиться к applesPrice, так как apple2 - это такая же переменная (объект), которая подчиняется законам видимости переменных и она доступна для обращения только между тех фигурных скобок, между которыми была создана (то есть в методе main()). Зато метод addPrice так же статический, и для того, чтобы к нему обратиться - так же не нужны никакие экземпляры класса: