Ну мне тоже когда-то было сложно в это вникнуть, но тут таблица - явно лишнее 😊 Тот самый случай, когда понять проще, чем зазубрить.
static - существует всегда. Например, есть статический метод catCount(List<Cat> cats). Этот метод считает котов. Разумеется, он существует всегда. Ну потому что есть коты или нет, это его не волнует. Посчитать котов можно и без кота 😏
non static - а это уже существует только у объекта. Например meow(). Метод мяуканья. Мы не можем мяукнуть без кота! Поэтому этот метод может быть вызван только у объекта. Посчитать котов без кота мы можем. Мяукнуть без кота мы не можем.
Вряд ли конечно кто-то что-то тут новое узнает, ну на всякий случай :)
Женя плюсую за понятное объяснение. У меня кот не мяукает от слова вообще. С котенка. Вот пришел ко мне таким шкетом с ладошку и весом с два коробка, а теперь в рост 128 см если стоит на задних лапах и 7 кг живого веса кабан. Смысл в том, что вообще не мявкает. Все молча. Я уже по взгляду с ним переговариваюсь. Живет у меня кот уже 8 лет. До него кошка прожила 17 лет и умерла по старости.
это как в анекдоте))
У родителей сын семь лет не разговаривал. Они и свыклись с мыслью, что ребёнок родился немым.
И вот сидят они, обедают. Вдруг сын ни с того ни с сего:
— Суп пересолен.
Родители, поражённые:
— Сынок, ты разговариваешь?! А раньше-то чего молчал?
— А раньше нормально было.
ЗЫ: сори за офтоп, конечно
Обычный метод/переменная может обращаться к static/non-static методам/переменных
Статические метод/переменная не может обращаться в НЕстатическим методам/переменным своего класса.
Для того чтобы статический метод/переменная могла использовать НЕстатические методы/переменные, нужно иметь экземпляр этого объекта.:
classCat{privateString name;publicCat(String name){this.name = name;}publicvoidmeow(){System.out.println(name +" do "+ meow);}}publicstaticvoidmain(String... args){Cat.meow();//так нельзя, объекта кота не существует, что за кот, что за имя?Cat cat =newCat("Murchik");
cat.meow();//так можно, мы создали кота, теперь мы можем использовать его методы}
Итого, есть статические члены класса (методы/переменные/блоки) которые обозначаются ключевым словом static
Они принадлежат классу (чертежу), и использовать мы их можем в любой момент времени, поскольку они существуют все время, пока есть наша программа.
Например для класса:
Cat{staticString color ="grey";String name;}
переменная String color с модификатором статик. Это значит, что создай мы одного кота или 1000, у всех котов будет одинаковый цвет - серый. Эту переменную все конкретные коты разделяют, то есть это общее свойство всех экземпляров
Если мы хотим, чтобы какая-то переменная была одинакова (общая) у всех экземпляра (обычно это константы) мы их делаем статическими
А вот переменная String name БЕЗ модификатора static, значит это переменная экземпляра (instance variable), то есть принадлежит конкретному экземпляру, и у каждого кота будет свое собственное имя.
Переменные экземпляра мы делаем те переменные, которые должны быть свои у каждого объекта, его отличительные особенности
Методы принято делать НЕстатическими, но для ряда случаев, например утильные классы, Arrays.sort они могут быть static
для понимания что static обращается только к static, а обычный куда хочет, нужна таблица?
тебе, как ученику 28 уровня таблица может и не нужна, наверное и без таблицы умножения обходишься! нам, первоклашкам, визуально и главное, очень доходчиво, стало понятнее. Перестаньте кидать понты о своей грамотности!