V tomto článku se seznámíme se statickými metodami a metodami instance v Javě.
Metody instance Java
Metody instance jsou metody, které vyžadují vytvoření objektu své třídy, než jej lze volat. Abychom mohli vyvolat metodu instance, musíme vytvořit objekt třídy, ve které je metoda definována.
public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>
Metoda alokace paměti instance
Tyto metody samotné jsou uloženy v prostoru Permanent Generation na haldě (Platné pouze do Java 7, nyní nahrazeno metaprostorem od Java 8 a novější s vylepšenou účinností), ale parametry (argumenty jim předávané) a jejich lokální proměnné a hodnota být vráceny jsou alokovány v zásobníku. Mohou být volány v rámci stejné třídy, ve které sídlí, nebo z různých tříd definovaných buď ve stejném balíčku nebo jiných balíčcích v závislosti na typ přístupu poskytnuty požadované metodě instance.
a-b prořezávání
Důležité body:
- Metoda(y) instance patří do objektu třídy, nikoli do třídy, tj. lze je volat po vytvoření objektu třídy.
- Metody instancí se neukládají na základě jednotlivých instancí, a to ani u virtuálních metod. Jsou uloženy v jediném paměťovém místě a vědí, ke kterému objektu patří, protože tento ukazatel je předán, když je voláte.
- Mohou být přepsány, protože jsou vyřešeny pomocí dynamická vazba v době běhu.
Níže je uvedena implementace přístupu k metodě instance:
Jáva
np.unikátní
// 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);> > }> }> |
>
podtržení markdown
>Výstup
techcodeview.com>
Statické metody Java
Statické metody jsou metody v Javě, které lze volat bez vytvoření objektu třídy. Odkazuje na ně samotný název třídy nebo odkaz na objekt této třídy.
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.>
Alokace paměti statických metod
Jsou uloženy v prostoru hromady Permanent Generation, protože jsou spojeny s třídou, ve které sídlí, nikoli s objekty této třídy. Ale jejich lokální proměnné a jim předané argumenty jsou uloženy v zásobníku. Protože patří do třídy, lze je volat bez vytvoření objektu třídy.
Důležité body:
- Statické metody jsou spojeny s třídou, ve které se nacházejí, tj. jsou volány bez vytvoření instance třídy, tj. ClassName.methodName(args) .
- Jsou navrženy s cílem sdílet je mezi všemi objekty vytvořenými ze stejné třídy.
- Statické metody nelze přepsat, protože jsou vyřešeny pomocí statická vazba kompilátorem v době kompilace. Můžeme však mít deklarované metody stejného názvu statický v obou supertřída a podtřída , ale bude se jmenovat Metoda skrývání protože metoda odvozené třídy skryje metodu základní třídy.
Níže je ilustrace přístupu ke statickým metodám:
Jáva
přirovnat k struně
jak zkontrolovat velikost obrazovky
// 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);> > }> }> |
>
>Výstup
vaibhav mohit>
Poznámka:
Jsou uloženy statické proměnné a jejich hodnoty (primitiva nebo reference) definované ve třídě PermGen prostor paměti.
Často kladené otázky
1. Co když statická proměnná odkazuje na Objekt?
static int i = 1; static Object obj = new Object();>V prvním řádku by byla hodnota 1 uložena v sekci PermGen. Na druhém řádku by referenční obj byl uložen v sekci PermGen a objekt, na který odkazuje, by byl uložen v sekci haldy.
2. Kdy použít statické metody?
- Když máte kód, který lze sdílet mezi všemi instancemi stejné třídy, vložte tuto část kódu do statické metody.
- V zásadě se používají pro přístup ke statickým polím třídy.
3. Rozdíl mezi instanční metodou a statickou metodou
- Metoda instance může přímo přistupovat k metodám instance a proměnným instance.
- Metoda instance může přistupovat přímo ke statickým proměnným a statickým metodám.
- Statické metody mohou přistupovat přímo ke statickým proměnným a statickým metodám.
- Statické metody nemají přímý přístup k metodám instance a proměnným instance. Musí používat odkaz na objekt. A statickou metodu nelze použít tento klíčové slovo, protože neexistuje žádný příklad pro „toto“, na který by se dalo odkazovat.