Потому что static
может использоваться без каких-либо экземпляров класса. Например, когда вы используете Integer.parseInt(...)
, вы вызываете его, используя имя класса Integer
, вы никогда не создавали экземпляр.
System.out.println(Integer.parseInt("123")); // Called with the name of the class
Итак, что, если вы можете ссылаться на экземпляр внутри этого метода static
? Если пользователь вызывает его с именем класса (без создания какого-либо экземпляра), метод не будет иметь никакого экземпляра для ссылки.
Примечание, что вы также можете вызвать метод static
с экземпляром, но рекомендуемый способ вызвать его с именем класса, чтобы подчеркнуть, что это static
метод:
Integer i = 0;
System.out.println(i.parseInt("123")); // Can also be called with an instance, but not recommended
Поскольку статические методы не привязаны к экземпляру объекта. Как Java знает, какой объект использовать? Статические методы можно вызвать без создания каких-либо экземпляров. – kwatford
Статические методы можно вызывать без создания экземпляра объекта этого класса. Они могут ссылаться на метод экземпляра, если экземпляр объекта передан статическому методу. –