logo

Metody statyczne a metody instancji w Javie

W tym artykule dowiemy się o metodach statycznych i metodach instancji w Javie.

Metody instancji Java

Metody instancji to metody, które wymagają utworzenia obiektu swojej klasy, zanim będzie można go wywołać. Aby wywołać metodę instancji, musimy utworzyć Obiekt klasy, w której zdefiniowano metodę.



public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>

Alokacja pamięci metodą instancji

Same metody są przechowywane w przestrzeni trwałej generacji sterty (obowiązują tylko do wersji Java 7, teraz zastąpione metaprzestrzenią od wersji Java 8 i nowszych z poprawioną wydajnością), ale parametry (argumenty przekazywane do nich) i ich zmienne lokalne oraz wartość do zostać zwrócone, są alokowane na stosie. Można je wywoływać w ramach tej samej klasy, w której się znajdują, lub z różnych klas zdefiniowanych w tym samym pakiecie lub w innych pakietach, w zależności od Typ dostępu dostarczone do żądanej metody instancji.

Ważne punkty:

  • Metody instancji należą do obiektu klasy, a nie do klasy, tzn. można je wywołać po utworzeniu obiektu klasy.
  • Metody instancji nie są przechowywane dla poszczególnych instancji, nawet w przypadku metod wirtualnych. Są przechowywane w jednym miejscu pamięci i wiedzą tylko, do którego obiektu należą, ponieważ ten wskaźnik jest przekazywany, gdy je wywołujesz.
  • Można je zastąpić, ponieważ są rozwiązywane za pomocą wiązanie dynamiczne W czasie wykonywania.

Poniżej znajduje się implementacja dostępu do metody instancji:



Jawa


Ciąg Java jest pusty





// Example to illustrate accessing the instance method .> import> java.io.*;> class> Foo {> >String name =>''>;> >// Instance method to be called within the> >// same class or from a another class defined> >// in the same package or in different package.> >public> void> geek(String name) {>this>.name = name; }> }> class> GFG {> >public> static> void> main(String[] args)> >{> >// create an instance of the class.> >Foo ob =>new> Foo();> >// calling an instance method in the class 'Foo'.> >ob.geek(>'techcodeview.com'>);> >System.out.println(ob.name);> >}> }>

tablica ciągów programu c
>

>

Wyjście

techcodeview.com>

Metody statyczne w Javie

Metody statyczne to metody w Javie, które można wywołać bez tworzenia obiektu klasy. Odwołują się do nich sama nazwa klasy lub odwołanie do obiektu tej klasy.

wyrażenie regresji w Javie
public static void geek(String name) { // code to be executed.... } // Must have static modifier in their declaration. // Return type can be int, float, String or user defined data type.>

Alokacja pamięci metod statycznych

Są one przechowywane w przestrzeni trwałej generacji na stercie, ponieważ są powiązane z klasą, w której się znajdują, a nie z obiektami tej klasy. Ale ich zmienne lokalne i przekazane im argumenty są przechowywane na stosie. Ponieważ należą do klasy, można je wywołać bez tworzenia obiektu klasy.

Ważne punkty:

  • Metody statyczne są powiązane z klasą, w której się znajdują, tj. są wywoływane bez tworzenia instancji klasy, tj. NazwaKlasy.NazwaMetody(argumenty) .
  • Zostały zaprojektowane z myślą o udostępnianiu ich wszystkim obiektom stworzonym w tej samej klasie.
  • Metod statycznych nie można zastąpić, ponieważ są one rozwiązywane za pomocą wiązanie statyczne przez kompilator w czasie kompilacji. Możemy jednak zadeklarować metody o tej samej nazwie statyczny zarówno superklasa I podklasa , ale będzie tzw Ukrywanie metody ponieważ metoda klasy pochodnej ukryje metodę klasy bazowej.

Poniżej znajduje się ilustracja dostępu do metod statycznych:

Jawa




// Example to illustrate Accessing> // the Static method(s) of the class.> import> java.io.*;> class> Geek {> >public> static> String geekName =>''>;> >public> static> void> geek(String name)> >{> >geekName = name;> >}> }> class> GFG {> >public> static> void> main(String[] args)> >{> >// Accessing the static method geek()> >// and field by class name itself.> >Geek.geek(>'vaibhav'>);> >System.out.println(Geek.geekName);> >// Accessing the static method geek()> >// by using Object's reference.> >Geek obj =>new> Geek();> >obj.geek(>'mohit'>);> >System.out.println(obj.geekName);> >}> }>

>

witryny takie jak bedpage

>

Wyjście

vaibhav mohit>

Notatka:

Zmienne statyczne i ich wartości (prymitywy lub referencje) zdefiniowane w klasie są przechowywane w PermGen przestrzeń pamięci.

Często Zadawane Pytania

1. Co jeśli zmienna statyczna odnosi się do obiektu?

static int i = 1; static Object obj = new Object();>

W pierwszym wierszu wartość 1 zostanie zapisana w sekcji PermGen. W drugiej linii obiekt odniesienia będzie przechowywany w sekcji PermGen, a obiekt, do którego się odnosi, będzie przechowywany w sekcji sterty.

2. Kiedy stosować metody statyczne?

  • Jeśli masz kod, który może być współużytkowany przez wszystkie instancje tej samej klasy, umieść tę część kodu w metodzie statycznej.
  • Zasadniczo służą one do uzyskiwania dostępu do pól statycznych klasy.

3. Różnica między metodą instancji a metodą statyczną

  • Metoda instancji może uzyskać bezpośredni dostęp do metod instancji i zmiennych instancji.
  • Metoda instancji może uzyskać bezpośredni dostęp do zmiennych statycznych i metod statycznych.
  • Metody statyczne mogą uzyskać bezpośredni dostęp do zmiennych statycznych i metod statycznych.
  • Metody statyczne nie mają bezpośredniego dostępu do metod i zmiennych instancji. Muszą używać odniesienia do obiektu. Nie można użyć metody statycznej Ten słowo kluczowe, ponieważ nie ma wystąpienia słowa „to”, do którego można by się odnieść.