Verschil tussen statische methoden en instantiemethoden

Ik las net de tekst in mijn leerboek door en ik weet niet zeker of ik begrijp wat er staat. Het vertelt me ​​​​in feite dat statische methoden of klassenmethoden het trefwoord “modifier” static bevatten. Maar ik weet niet echt wat dat betekent?

Kan iemand me alsjeblieft in heel eenvoudige bewoordingen uitleggen wat statische of klassenmethoden zijn?

Kan ik ook een eenvoudige uitleg krijgen over wat instantiemethoden zijn?

Dit is wat ze me in het leerboek geven:

Er zijn belangrijke praktische implicaties van de aan- of afwezigheid van de statische modifier. Een openbare klassenmethode kan worden aangeroepen en uitgevoerd zodra Java de definitie van de klasse waartoe deze behoort, verwerkt. Dat is niet het geval voor een instantiemethode. Voordat een openbare instantiemethode kan worden aangeroepen en uitgevoerd, moet er een instantie worden gemaakt van de klasse waartoe deze behoort. Om een ​​openbare klassenmethode te gebruiken, heb je alleen de klasse nodig. Aan de andere kant, voordat u een openbare instantiemethode kunt gebruiken, moet u een instantie van de klasse hebben.

De manier waarop een statische methode wordt aangeroepen binnen de definitie van een andere methode, hangt af van het feit of de twee methoden al dan niet tot dezelfde klasse behoren. In het bovenstaande voorbeeld zijn faculteit en main beide methoden van de klasse MainClass. Als gevolg hiervan verwijst het aanroepen van faculteit in de definitie van main eenvoudigweg naar de naam van de methode, “faculteit”.


Antwoord 1, autoriteit 100%

Het basisparadigma in Java is dat je klassen schrijft en dat die klassen worden geïnstantieerd. Geïnformeerde objecten (een instantie van een klasse) hebben attributen die eraan zijn gekoppeld (lidvariabelen) die hun gedrag beïnvloeden; wanneer de instantie zijn methode heeft uitgevoerd, zal deze naar deze variabelen verwijzen.

Alle objecten van een bepaald type kunnen echter gedrag vertonen dat helemaal niet afhankelijk is van lidvariabelen; deze methoden kunnen het beste statisch worden gemaakt. Door statisch te zijn, is er geen instantie van de klasse vereist om de methode uit te voeren.

U kunt dit doen om een ​​statische methode uit te voeren:

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

Maar om een ​​niet-statische methode uit te voeren, moet u dit doen:

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

Op een dieper niveau verzamelt de compiler, wanneer hij een klasse samenstelt, verwijzingen naar methoden en koppelt deze aan de klasse. Wanneer die methoden worden uitgevoerd, volgt het de aanwijzers en voert het de code aan het uiteinde uit. Als een klasse wordt geïnstantieerd, bevat het gemaakte object een verwijzing naar de “virtuele methodetabel”, die verwijst naar de methoden die moeten worden aangeroepen voor die specifieke klasse in de overervingshiërarchie. Als de methode echter statisch is, is er geen “virtuele methodetabel” nodig: alle aanroepen van die methode gaan naar exact dezelfde plaats in het geheugen om exact dezelfde code uit te voeren. Om die reden is het in krachtige systemen beter om een ​​statische methode te gebruiken als u niet afhankelijk bent van instantievariabelen.


Antwoord 2, autoriteit 12%

Methoden en variabelen die niet als statisch zijn gedeclareerd, staan ​​bekend als instantiemethoden en instantievariabelen. Om naar instantiemethoden en variabelen te verwijzen, moet u eerst de klasse instantiëren, wat betekent dat u eerst een object van die klasse moet maken. dat is in (.)

bijvoorbeeld:

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

voor een niet-statische methode moet je de klasse instantiëren.

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

Antwoord 3, autoriteit 6%

Verschil tussen statische methoden en instantiemethoden

  1. Instance-methode zijn methoden waarvoor een object van zijn klasse moet worden gemaakt voordat het kan worden aangeroepen. Statische methoden zijn de methoden in Java die kunnen worden aangeroepen zonder een object van klasse te maken.

  2. Statische methode wordt gedeclareerd met statisch sleutelwoord. Instantiemethode is niet met statisch zoekwoord.

  3. Statische methode betekent dat deze als een enkele kopie voor een klasse zal bestaan. Maar instantiemethoden bestaan ​​als meerdere exemplaren, afhankelijk van het aantal instanties dat voor die klasse is gemaakt.

  4. Statische methoden kunnen worden aangeroepen door klasseverwijzing te gebruiken. Instantie- of niet-statische methoden worden aangeroepen door objectverwijzing te gebruiken.

  5. Statische methoden hebben geen directe toegang tot instantiemethoden en instantievariabelen. Instantiemethode heeft rechtstreeks toegang tot statische variabelen en statische methoden.

Referentie: geeksforgeeks


Antwoord 4, autoriteit 5%

Statische methoden, variabelen behoren tot de hele klasse, niet alleen tot een objectinstantie. Een statische methode, variabele wordt geassocieerd met de klasse als geheel in plaats van met specifieke instanties van een klasse. Elk object deelt een gemeenschappelijke kopie van de statische methoden, variabelen. Er is slechts één exemplaar per klasse, ongeacht hoeveel objecten er van worden gemaakt.


Antwoord 5, autoriteit 2%

Instance-methoden => aangeroepen op een specifiek exemplaar van een specifieke klasse. Method wil weten op welke klasse het is aangeroepen. De manier waarop het gebeurt, is dat er een onzichtbare parameter is die ‘this’ wordt genoemd. Binnenin ‘dit’ hebben we leden van de instantieklasse die al zijn ingesteld met waarden. ‘Dit’ is geen variabele. Het is een waarde, u kunt deze niet wijzigen en de waarde is een verwijzing naar de ontvanger van de oproep.
Bijvoorbeeld: u belt reparateurs (voorbeeldmethode) om uw tv (echte programma) te repareren. Hij komt met tools (‘deze’ parameter). Hij wordt geleverd met specifieke gereedschappen die nodig zijn voor het repareren van tv en hij kan ook andere dingen repareren.

In statische methoden => er bestaat niet zoiets als ‘dit’.
Bijvoorbeeld: Dezelfde reparateur (statische methode). Wanneer u hem belt, moet u aangeven welke reparateur u moet bellen (zoals een elektricien). En hij komt alleen je tv repareren. Maar hij heeft geen tools om andere dingen op te lossen (er is geen ‘this’ parameter).

Statische methoden zijn meestal handig voor bewerkingen waarvoor geen gegevens van een instantie van de klasse nodig zijn (van ‘this’) en die hun beoogde doel kunnen bereiken door alleen hun argumenten te gebruiken.


Antwoord 6, autoriteit 2%

Kortom, statische methoden en statische variabelen zijn op klasseniveau, terwijl instantiemethoden en instantievariabelen op instantie- of objectniveau zijn.

Dit betekent dat wanneer een instantie of object (met nieuwe ClassName()) wordt gemaakt, dit object zijn eigen kopie van instantievariabelen behoudt. Als je vijf verschillende objecten van dezelfde klasse hebt, heb je vijf verschillende exemplaren van de instantievariabelen. Maar de statische variabelen en methoden zullen hetzelfde zijn voor al die vijf objecten. Als je iets gemeenschappelijks nodig hebt dat door elk gemaakt object moet worden gebruikt, maak het dan statisch. Als je een methode nodig hebt die geen objectspecifieke gegevens nodig heeft om te werken, maak deze dan statisch. De statische methode werkt alleen met statische variabelen of retourneert gegevens op basis van doorgegeven argumenten.

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);
    }
}

In het bovenstaande voorbeeld, wanneer u add() aanroept als:

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
    }
}

In de eerste klas retourneert add() de som van de gegevens die door een specifiek object zijn doorgegeven. Maar de statische methode kan worden gebruikt om de som te krijgen van elke klasse die niet onafhankelijk is van een specifiek exemplaar of object. Vandaar dat generieke methoden die alleen argumenten nodig hebben om te werken statisch kunnen worden gemaakt om het allemaal DROOG te houden.


Antwoord 7

Het gedrag van een object hangt af van de variabelen en de methoden van die klasse. Wanneer we een klasse maken, maken we er een object voor. Voor statische methoden hebben we ze niet nodig, omdat statische methoden betekenen dat alle objecten dezelfde kopie hebben, dus er is geen object nodig.
bijv.:

Myclass.get();

In instantiemethode zal elk object verschillend gedrag vertonen, dus moeten ze de methode aanroepen met behulp van de objectinstantie.
bijv.:

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

Antwoord 8

Als de status van een methode niet mag worden gewijzigd of als er geen instantievariabelen worden gebruikt.

U wilt de methode aanroepen zonder instantie.

Als het alleen werkt op basis van argumenten die eraan worden gegeven.

Hulpprogramma’s zijn een goed voorbeeld van statische methoden. d.w.z. math.pow(), deze functie zal de status voor verschillende waarden niet veranderen. Het is dus statisch.


Antwoord 9

Instance-methode versus statische methode

  1. De instantiemethode heeft toegang tot de instantiemethoden en instantie
    variabelen direct.

  2. Exemplaarmethode heeft toegang tot statische variabelen en statische methoden
    rechtstreeks.

  3. Statische methoden hebben toegang tot de statische variabelen en statische methoden
    rechtstreeks.

  4. Statische methoden hebben geen toegang tot instantiemethoden en instantievariabelen
    direct. Ze moeten een verwijzing naar het object gebruiken. En statische methode kan niet
    gebruik dit zoekwoord omdat er geen instantie is om naar dit te verwijzen.


Antwoord 10

Statische methoden versus instantiemethoden

Constructeur:

const Person = function (birthYear) {
  this.birthYear = birthYear;
}

Instancemethode -> Beschikbaar

Person.prototype.calcAge = function () {
  2037 - this.birthYear);
} 

Statische methode -> Niet beschikbaar

Person.hey = function(){
  console.log('Hey')
}

Klasse:

class PersonCl {
    constructor(birthYear) {
      this.birthYear = birthYear;
    } 
    /**
     * Instance Method -> Available to instances
     */
    calcAge() {  
        console.log(2037 - this.birthYear);
    }
    /**
     * Static method -> Not available to instances
     */
    static hey() { 
        console.log('Static HEY ! ');
    }
}

Antwoord 11

Als de statische modifier voor een functie wordt geplaatst, betekent dit dat er slechts één exemplaar van die functie bestaat. Als de statische modifier niet voor de functie wordt geplaatst, wordt met elk object of exemplaar van die klasse een nieuwe kopie van die functie gemaakt. 🙂
Hetzelfde is het geval met variabelen.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes