Почему обьект apple вызывает статическую функцию addPrice?
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) {
//напишите тут ваш код
И. Ж.
41 уровень
Непонятен момент. (решение понятно, но не пойму почему обьект вызывает статический метод, вроде ж не может так быть, но тем не менее работает.
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Максим
7 июня 2022, 20:34
Статические методы и переменные можно сравнить с бензином в баке, он сразу поступает в двигатель, а не статические - это чертёж бака. Бак сначала нужно создать по чертежу ( создать объект класса), потом залить бензин (проинициализировать переменную.
0
Максим
7 июня 2022, 19:30
Я не уверен, что я отвечу на ваш вопрос. Но прежде чем отвечать, позвольте вам задать наводящий вопрос. Почему вы считаете, что такого не может быть? Когда вы ответите будет ясно в какую сторону "копать".
0
milyasow
2 июня 2022, 19:04
Почему обьект apple вызывает статическую функцию addPrice?
Потому что он прописан как статический метод класса Apple, и вы вызываете его у экземпляра класса Apple. Это не запрещено.
+2
И. Ж.
2 июня 2022, 19:07
Понял, спасибо. Просто он вызывается и путем Apple.addPrice, а здесь через обьект путем apple.addPrice. Проверял работает и так и так
+1
Стас ПасинковSoftware Developer в ZipyMaster
3 июня 2022, 14:18решение
это не запрещено, да.
но рекомендуют придерживаться общепринятого код-стайла, когда к статическим методам обращаются через имя класса, а не через объект этого класса.
там вроде и идея подсвечивает такие вещи как ворнинг типа)
но работает и так, и так, да)
+2