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
Но чтобы выполнить нестатический метод, вы должны сделать это:
MyClassobj=newMyClass(); //Create an instance obj.nonstaticMethod(); // Refer to the instance's class's code
На более глубоком уровне компилятор, когда он объединяет класс, собирает указатели на методы и присоединяет их к классу. Когда эти методы выполняются, он следует указателям и выполняет код на дальнем конце. Если создается экземпляр класса, созданный объект содержит указатель на "таблицу виртуальных методов", которая указывает на методы, которые будут вызываться для этого конкретного класса в иерархии наследования. Однако, если метод статический, никакая "таблица виртуальных методов" не требуется: все вызовы этого метода отправляются в одно и то же место в памяти для выполнения одного и того же кода. По этой причине в высокопроизводительных системах лучше использовать статический метод, если вы не зависите от переменных экземпляра.
Ответ 2
Методы и переменные, которые не объявлены как статические, известны как методы экземпляра и переменные экземпляра. Чтобы ссылаться на методы и переменные экземпляра, вы должны сначала создать экземпляр класса, что означает, что вы должны сначала создать объект этого класса.Для static вам не нужно создавать экземпляр класса, вы можете получить доступ к методам и переменным с именем класса, используя знак точки, который находится в (.)
например:
Person.staticMethod(); //accessing static method.
для нестатического метода вы должны создать экземпляр класса.
Разница между статическими методами и методами экземпляра
Метод экземпляра - это методы, которые требуют создания объекта своего класса перед его вызовом. Статические методы - это методы в Java, которые могут быть вызваны без создания объекта класса.
Статический метод объявляется с помощью ключевого слова static. Метод экземпляра не имеет ключевого слова static.
Статический метод означает, что он будет существовать в виде единственной копии для класса. Но методы экземпляра существуют в виде нескольких копий в зависимости от количества экземпляров, созданных для этого класса.
Статические методы могут быть вызваны с помощью ссылки на класс. Экземплярные или нестатические методы вызываются с помощью ссылки на объект.
Статические методы не могут обращаться к методам экземпляра и переменным экземпляра напрямую. Метод экземпляра может обращаться к статическим переменным и статическим методам напрямую.
Статические методы, переменные принадлежат всему классу, а не только экземпляру объекта. Статический метод, переменная связана с классом в целом, а не с конкретными экземплярами класса. Каждый объект будет использовать общую копию статических методов, переменных. Для каждого класса существует только одна копия, независимо от того, сколько объектов создано из нее.