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ść.