Вопрос-ответ

Difference between Static methods and Instance methods

Разница между статическими методами и методами экземпляра

Я просто перечитывал текст, приведенный мне в моем учебнике, и я не совсем уверен, что понимаю, о чем он говорит. По сути, он говорит мне, что статические методы или методы класса включают ключевое слово "модификатор" static . Но я действительно не знаю, что это значит?

Не мог бы кто-нибудь, пожалуйста, объяснить мне действительно простыми словами, что такое статические методы или методы класса?

Кроме того, могу ли я получить простое объяснение того, что такое методы экземпляра?

Это то, что они дают мне в учебнике:


Наличие или отсутствие статического модификатора имеет важные практические последствия. Метод открытого класса может быть вызван и выполнен, как только Java обработает определение класса, к которому он принадлежит. Это не относится к методу экземпляра. Прежде чем метод общедоступного экземпляра может быть вызван и выполнен, должен быть создан экземпляр класса, к которому он принадлежит. Чтобы использовать метод открытого класса, вам просто нужен класс. С другой стороны, прежде чем вы сможете использовать метод открытого экземпляра, у вас должен быть экземпляр класса.


Способ, которым статический метод вызывается в определении другого метода, варьируется в зависимости от того, принадлежат ли эти два метода к одному классу. В приведенном выше примере factorial и main являются методами класса MainClass . В результате вызов factorial в определении main просто ссылается на имя метода "factorial".


Переведено автоматически
Ответ 1

Основная парадигма Java заключается в том, что вы пишете классы и что эти классы создаются экземплярами. Созданные экземпляры объектов (экземпляр класса) имеют связанные с ними атрибуты (переменные-члены), которые влияют на их поведение; когда экземпляр выполняет свой метод, он будет ссылаться на эти переменные.

Однако все объекты определенного типа могут иметь поведение, которое вообще не зависит от переменных-членов; эти методы лучше всего сделать статическими. Поскольку они статичны, для запуска метода не требуется экземпляра класса.

Вы можете сделать это для выполнения статического метода:

MyClass.staticMethod();  // Simply refers to the class's static code

Но чтобы выполнить нестатический метод, вы должны сделать это:

MyClass obj = new MyClass();  //Create an instance
obj.nonstaticMethod(); // Refer to the instance's class's code

На более глубоком уровне компилятор, когда он объединяет класс, собирает указатели на методы и присоединяет их к классу. Когда эти методы выполняются, он следует указателям и выполняет код на дальнем конце. Если создается экземпляр класса, созданный объект содержит указатель на "таблицу виртуальных методов", которая указывает на методы, которые будут вызываться для этого конкретного класса в иерархии наследования. Однако, если метод статический, никакая "таблица виртуальных методов" не требуется: все вызовы этого метода отправляются в одно и то же место в памяти для выполнения одного и того же кода. По этой причине в высокопроизводительных системах лучше использовать статический метод, если вы не зависите от переменных экземпляра.

Ответ 2

Методы и переменные, которые не объявлены как статические, известны как методы экземпляра и переменные экземпляра. Чтобы ссылаться на методы и переменные экземпляра, вы должны сначала создать экземпляр класса, что означает, что вы должны сначала создать объект этого класса.Для static вам не нужно создавать экземпляр класса, вы можете получить доступ к методам и переменным с именем класса, используя знак точки, который находится в (.)

например:

Person.staticMethod();           //accessing static method.

для нестатического метода вы должны создать экземпляр класса.

Person person1 = new Person();   //instantiating
person1.nonStaticMethod(); //accessing non-static method.
Ответ 3

Разница между статическими методами и методами экземпляра


  1. Метод экземпляра - это методы, которые требуют создания объекта своего класса перед его вызовом. Статические методы - это методы в Java, которые могут быть вызваны без создания объекта класса.


  2. Статический метод объявляется с помощью ключевого слова static. Метод экземпляра не имеет ключевого слова static.


  3. Статический метод означает, что он будет существовать в виде единственной копии для класса. Но методы экземпляра существуют в виде нескольких копий в зависимости от количества экземпляров, созданных для этого класса.


  4. Статические методы могут быть вызваны с помощью ссылки на класс. Экземплярные или нестатические методы вызываются с помощью ссылки на объект.


  5. Статические методы не могут обращаться к методам экземпляра и переменным экземпляра напрямую. Метод экземпляра может обращаться к статическим переменным и статическим методам напрямую.


Ссылка : geeksforgeeks

Ответ 4

Статические методы, переменные принадлежат всему классу, а не только экземпляру объекта. Статический метод, переменная связана с классом в целом, а не с конкретными экземплярами класса. Каждый объект будет использовать общую копию статических методов, переменных. Для каждого класса существует только одна копия, независимо от того, сколько объектов создано из нее.

java