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



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



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



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



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




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



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


1055   10  

10 ответов:

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

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

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

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

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

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

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

например:

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

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

Person person1 = new Person();   //instantiating
person1.nonStaticMethod();       //accessing non-static method.

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

методы экземпляра => вызывается на конкретном экземпляре определенного класса. Метод хочет знать, на какой класс он был вызван. То, как это происходит, есть невидимый параметр, называемый "это". Внутри "этого" у нас есть члены класса экземпляра, уже установленные со значениями. "Это" не является переменной. Это значение, вы не можете изменить его, и значение является ссылкой на получателя вызова. Ex: вы вызываете ремонтников(метод экземпляра), чтобы исправить ваш телевизор(программа). Он поставляется с инструментами (этот параметр). Он поставляется с конкретными инструментами, необходимыми для фиксации телевизора, и он может исправить и другие вещи.

на статические методы = > нет такой вещи, как "это". Ex: тот же ремонтник (статический метод). Когда вы звоните ему, вы должны указать, какой ремонтник позвонить (например, электрика). И он придет и починит только ваш телевизор. Но у него нет инструментов для исправления других вещей (нет параметра "this").

статический методы обычно полезны для операций, которые не требуют каких-либо данных из экземпляра класса (из 'this') и могут выполнять свое предназначение исключительно с помощью своих аргументов.

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

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

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

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

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

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

ссылки : geeksforgeeks

Если состояние метода не предполагается изменять или он не будет использовать какие-либо переменные экземпляра.

вы хотите вызвать метод без экземпляра.

Если он работает только с аргументами, предоставленными ему.

служебные функции являются хорошим примером статических методов. то есть математика.pow (), эта функция не будет изменять состояние для разных значений. Так что это статично.

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

Myclass.get();

в методе экземпляра каждый объект будет иметь различное поведение, поэтому они должны вызвать метод, используя экземпляр объекта. например:

Myclass x = new Myclass();
x.get();

короче, статические методы и статические переменные класса, где, как методы экземпляра и переменных экземпляра экземпляр или объект.

это означает, что всякий раз, когда создается экземпляр или объект (с использованием нового ClassName ()), этот объект сохранит свою собственную копию переменных instace. Если у вас есть пять разных объектов одного класса, у вас будет пять разных копий переменных экземпляра. Но статические переменные и методы будут одинаковыми для всех этих пяти объектов. Если вам нужно что-то общее для использования каждым созданным объектом, сделайте его статичным. Если вам нужен метод, который не будет нуждаться в конкретных данных объекта для работы, сделайте его статическим. Статический метод будет работать только со статической переменной или будет возвращать данные на основе переданных аргументов.

class A {
    int a;
    int b;

    public void setParameters(int a, int b){
        this.a = a;
        this.b = b;
    }
    public int add(){
        return this.a + this.b;
   }

    public static returnSum(int s1, int s2){
        return (s1 + s2);
    }
}

В приведенном выше примере при вызове add() как:

A objA = new A();
objA.setParameters(1,2); //since it is instance method, call it using object
objA.add(); // returns 3 

B objB = new B();
objB.setParameters(3,2);
objB.add(); // returns 5

//calling static method
// since it is a class level method, you can call it using class itself
A.returnSum(4,6); //returns 10

class B{
    int s=8;
    int t = 8;
    public addition(int s,int t){
       A.returnSum(s,t);//returns 16
    }
}

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

метод экземпляра против статического метода

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

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

  3. статические методы могут обращаться к статическим переменным и статическим методам непосредственно.

  4. статические методы не могут получить доступ к методам экземпляра и переменных экземпляра непосредственно. Они должны использовать ссылку на объект. И статический метод не может используйте это ключевое слово, поскольку нет экземпляра для’ this ' для ссылки.

статический модификатор при размещении перед функцией подразумевает, что существует только одна копия этой функции. Если модификатор static не ставится перед функцией, то с каждым объектом или экземпляром класса новая копия этой функции. :) То же самое относится и к переменным.

Comments

    Ничего не найдено.