У меня возникли проблемы с определением, должен ли метод быть статическим или частным. Я спрашивал разных людей, но концепция, когда использовать и то, и другое, не сохранилась. Кто-нибудь может привести мне пример?

0
Gingerale 18 Мар 2019 в 19:54

1 ответ

Лучший ответ

private и static - два разных понятия, которые нельзя сравнивать напрямую.

static означает, что метод или переменная привязана к классу, а не к экземпляру класса. Когда вы обращаетесь к статическому методу или переменной, вы можете получить к нему доступ, используя имя класса. Допустим, у вашего класса Banana есть статический метод static String fruitName(), тогда вы можете вызвать его так: Banana.fruitName(). Вам не нужен конкретный Banana, а только класс.

Предположим вместо этого, что у вас есть нестатический метод, такой как void peel(), который изменяет состояние объекта Banana и устанавливает peeled = true. В этом случае вы не можете позвонить Banana.peel(), потому что вам нужно peel конкретный Banana. Как это:

Banana niceBanana = new Banana();
niceBanana.peel();

private - это другое понятие: это модификатор видимости. Он просто указывает на то, что объект доступен только изнутри класса.
Итак, если ваш класс Banana выглядит так:

class Banana {
  private int weight;
}

Тогда вы сможете получить доступ к переменной weight только внутри класса Banana. То же самое касается других вещей, отмеченных как частные, например методов и классов.

4
gpunto 18 Мар 2019 в 17:07