Мне интересно, как нестатический метод может изменять статическую переменную экземпляра. Я знаю, что статические методы могут обращаться только к другим статическим методам и статическим переменным. Однако, правда ли другая сторона? Могут ли нестатические методы обращаться к нестационарным переменным? Например:Могут ли нестатические методы изменять статические переменные
public class SampleClass {
private static int currentCount = 0;
public SampleClass() {
currentCount++;
}
public void increaseCount() {
currentCount++;
}
}
Этот код компилируется, и я хотел бы знать, почему с точки зрения статического доступа.
пытались ли вы его? –
@Marco Да, он компилируется. Просто интересно, знают ли люди это где-нибудь, и правильно ли мои рассуждения. –
На самом деле не так, что статические методы не могут изменять переменные экземпляра. Просто они не имеют никаких скрытых «этих» ссылок. Вы можете написать 'class Ex {private int x; static void fn (Ex ex) {ex.x = 12; }} '. Кстати: Мутированная статика - это, как правило, плохая идея. –