Šajā rakstā mēs uzzināsim par statiskajām metodēm un instanču metodēm Java.
turbo c++ lejupielāde
Java gadījumu metodes
Instanču metodes ir metodes, kurām ir nepieciešams izveidot savas klases objektu, pirms to var izsaukt. Lai izsauktu instances metodi, mums ir jāizveido tās klases objekts, kurā metode ir definēta.
public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>
Instanču atmiņas piešķiršanas metode
Šīs metodes pašas tiek glabātas kaudzes pastāvīgās paaudzes telpā (derīga tikai līdz Java 7, tagad aizstāta ar metaspace no Java 8 un turpmāk ar uzlabotu efektivitāti), bet parametri (viņām nodotie argumenti) un to lokālie mainīgie un vērtība tiek sadalīti kaudzē. Tos var izsaukt tajā pašā klasē, kurā tie atrodas, vai no dažādām klasēm, kas definētas vienā un tajā pašā pakotnē vai citās pakotnēs atkarībā no piekļuves veids nodrošināta vēlamajai instances metodei.
Svarīgi punkti:
- Instanču metode(-es) pieder klases objektam, nevis klasei, t.i., tās var izsaukt pēc klases objekta izveidošanas.
- Instanču metodes netiek saglabātas katrai instancei pat ar virtuālajām metodēm. Tie tiek glabāti vienā atmiņas vietā, un viņi zina tikai to, kuram objektam tie pieder, jo šis rādītājs tiek nodots, kad jūs tiem piezvanāt.
- Tos var ignorēt, jo tie tiek atrisināti, izmantojot dinamiska iesiešana darbības laikā.
Tālāk ir sniegta piekļuves instances metodes ieviešana:
Java
// 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);> > }> }> |
>
>Izvade
techcodeview.com>
Java statiskās metodes
Statiskās metodes ir Java metodes, kuras var izsaukt, neveidojot klases objektu. Uz tiem atsaucas pats klases nosaukums vai atsauce uz šīs klases objektu.
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.>
Statisko metožu atmiņas piešķiršana
Tie tiek glabāti kaudzes pastāvīgās paaudzes telpā, jo tie ir saistīti ar klasi, kurā tie atrodas, nevis ar šīs klases objektiem. Bet to lokālie mainīgie un tiem nodotie argumenti tiek glabāti kaudzē. Tā kā tie pieder klasei, tāpēc tos var izsaukt, neradot klases objektu.
Svarīgi punkti:
- Statiskā(-ās) metodes(-es) ir saistītas ar klasi, kurā tās atrodas, t.i., tās tiek izsauktas, neveidojot klases gadījumu, t.i. ClassName.methodName(args) .
- Tie ir izstrādāti ar mērķi dalīties starp visiem objektiem, kas izveidoti no vienas klases.
- Statiskās metodes nevar ignorēt, jo tās tiek atrisinātas, izmantojot statiskā iesiešana kompilators kompilēšanas laikā. Tomēr mēs varam deklarēt tādas pašas nosaukuma metodes statisks abos superklase un apakšklase , bet to sauks Slēpšanas metode jo atvasinātā klases metode paslēps bāzes klases metodi.
Tālāk ir parādīts statisko metožu piekļuves ilustrācija:
Java
bash ja nosacījums
// 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);> > }> }> |
>
>Izvade
vaibhav mohit>
Piezīme:
Klasē definētie statiskie mainīgie un to vērtības (primitīvi vai atsauces) tiek saglabāti PermGen atmiņas telpa.
bieži uzdotie jautājumi
1. Ko darīt, ja statiskais mainīgais attiecas uz objektu?
static int i = 1; static Object obj = new Object();>Pirmajā rindā vērtība 1 tiks saglabāta sadaļā PermGen. Otrajā rindā atsauces objekts tiktu saglabāts sadaļā PermGen, un objekts, uz kuru tas attiecas, tiktu saglabāts kaudzes sadaļā.
2. Kad izmantot statiskās metodes?
- Ja jums ir kods, ko var koplietot visos vienas klases gadījumos, ievietojiet šo koda daļu statiskajā metodē.
- Tos pamatā izmanto, lai piekļūtu klases statiskajam(-iem) laukam(-iem).
3. Atšķirība starp instances metodi un statisko metodi
- Instanču metode var tieši piekļūt instances metodēm un gadījumu mainīgajiem.
- Instanču metode var tieši piekļūt statiskajiem mainīgajiem un statiskajām metodēm.
- Statiskās metodes var tieši piekļūt statiskajiem mainīgajiem un statiskajām metodēm.
- Statiskās metodes nevar tieši piekļūt gadījumu metodēm un gadījumu mainīgajiem. Viņiem ir jāizmanto atsauce uz objektu. Un statisko metodi nevar izmantot šis atslēgvārdu, jo nav gadījuma, uz ko atsaukties “šis”.