Het verschil tussen klassen, objecten en instanties

Wat is een klasse, een object en een instantie in Java?


Antwoord 1, autoriteit 100%

Java (en elke andere programmeertaal) is gemodelleerd in termen van typenen waarden. Op theoretisch niveau is een waardeeen representatie voor een hoeveelheid informatie, en een typeis een reeks waarden. Als we zeggen dat waarde X een instantie isvan het type Y, zeggen we eenvoudigweg dat X een lid is van de reeks waarden die het type Y is.

Dus dat is wat de term ‘instantie’ echt betekent: het beschrijft een relatie, niet iets.

Het typesysteem van de programmeertaal Java ondersteunt twee soorten typen, primitieve typenen referentietypen. De referentietypes zijn verder onderverdeeld in de klassenen arraytypes. Een Java objectis een instantie van een referentietype.

Een object is een klasse-instantie of een array. (JLS 4.3.1)

Dat is de typetheoretische visie.

In de praktijk behandelen de meeste Java-ontwikkelaars de woorden “instantie” en “object” als synoniemen. (En dat geldt ook voor mij, dan probeer ik iets snel uit te leggen.) En de meeste ontwikkelaars gebruiken het woord “waarde” in plaats van “instantie” om te verwijzen naar een instantie van een primitief type.


Antwoord 2, autoriteit 92%

Een klasseis een blauwdruk die je gebruikt om objectente maken. Een object is een instantievan een klasse – het is een concreet ‘ding’ dat je hebt gemaakt met behulp van een specifieke klasse. Dus ‘object’ en ‘instantie’ zijn hetzelfde, maar het woord ‘instantie’ geeft de relatie van een object tot zijn klasse aan.

Dit is gemakkelijk te begrijpen als je naar een voorbeeld kijkt. Stel dat je een klas Househebt. Je eigen huis is een object en is een instantie van de klasse House. Het huis van je zus is een ander object (een ander exemplaar van de klasse House).

// Class House describes what a house is
class House {
    // ...
}
// You can use class House to create objects (instances of class House)
House myHouse = new House();
House sistersHouse = new House();

De klasse Housebeschrijft het concept van wat een huis is, en er zijn specifieke, betonnen huizen die objecten en instanties zijn van klasse House.

Opmerking: dit is in Java precies hetzelfde als in alle objectgeoriënteerde programmeertalen.


Antwoord 3, autoriteit 32%

Een klasse is in feite een definitie en bevat de code van het object. Een object is een instantie van een klasse

bijvoorbeeld als je zegt

String word = new String();

de klasse is de String-klasse, die het object (instantie) woord beschrijft.

Als een klasse wordt gedeclareerd, wordt er geen geheugen toegewezen, dus is de klasse slechts een sjabloon.

Wanneer het object van de klasse wordt gedeclareerd, wordt geheugen toegewezen.


Antwoord 4, autoriteit 14%

Ik hou van Jesper’s uitleg in termen van leken

Door voorbeelden uit het antwoord van Jesper te improviseren,

class House {
// blue print for House Objects
}
class Car {
// blue print for Instances of Class Car 
}
House myHouse = new House();
Car myCar = new Car();

myHouse en myCar zijn objecten

myHouse is een instantie van House (verbindt Object-myHouse met zijn Class-House)
myCar is een instantie van Car

in het kort

“myHouse is een instantievan ClassHouse”, wat hetzelfde is als zeggen “myHouse is een Objectvan het typeHuis”


Antwoord 5, autoriteit 6%

Klasse is gegevenstype, u gebruikt dit type om een object te maken.

  • Instance is logisch, maar object is fysiek betekent dat het wat geheugen in beslag neemt.

  • We kunnen een instantie maken voor zowel de abstracte klasse als voor de interface, maar we kunnen geen
    . maken
    object voor hen.

  • Object is instantie van klasse en instantie betekent representatief voor klasse, d.w.z. object.

  • Instance verwijst naar de referentie van een object.

  • Object verwijst eigenlijk naar het geheugenadres van die instantie.

  • Je kunt de instantie niet over de lagen heen laten gaan, maar je kunt het object over de lagen laten gaan

  • U kunt geen instantie opslaan, maar u kunt wel een object opslaan

  • Een enkel object kan meer dan één instantie hebben.

  • Instance heeft zowel de klassedefinitie als de objectdefinitie, terwijl het, net als in object, alleen de objectdefinitie heeft.

Syntaxis van object:

Classname var=new Classname();

Maar bijvoorbeeld het maken geeft alleen een aanwijzer terug die naar een object verwijst, de syntaxis is:

Classname varname;

Antwoord 6, autoriteit 3%

In Java worden de objecten in heap-geheugen voortgebracht. Deze vereisen dat verwijzingen worden aangegeven en gebruikt in onze toepassing. De referentie heeft de geheugenlocatie van het object waarmee we de objecten in onze applicatie kunnen gebruiken. Een verwijzing in het kort is niets anders dan een naam van de variabele die het adres opslaat van het object dat is geïnstantieerd op een geheugenlocatie.

Een instanceis een algemene term voor Object. Ter info, Objectis een klasse.

Bijvoorbeeld,

Class A{
}
A ref = new A();

Voor het bovenstaande codefragment is ref de referentie voor een object van klasse A dat op heap is gegenereerd.


Antwoord 7, autoriteit 3%

Eerlijk gezegd voel ik me meer op mijn gemak bij Alfred blogdefinities:

Object: objecten uit de echte wereld delen 2 hoofdkenmerken, toestand en gedrag. Mensen hebben een staat (naam, leeftijd) en gedrag (rennen, slapen). Auto heeft staat (huidige snelheid, huidige versnelling) en gedrag (rem intrappen, schakelen). Software-objecten lijken conceptueel op objecten uit de echte wereld: ook zij bestaan uit toestand en gerelateerd gedrag. Een object slaat zijn staat op in velden en onthult zijn gedrag door middel van methoden.

Klasse: is een “sjabloon” / “blauwdruk” die wordt gebruikt om objecten te maken. Kortom, een klasse bestaat uit veld, statisch veld, methode, statische methode en constructor. Veld wordt gebruikt om de status van de klas vast te houden (bijvoorbeeld: naam van Student-object). Methode wordt gebruikt om het gedrag van de klas weer te geven (bijvoorbeeld: hoe een Student-object gaat staan). Constructor wordt gebruikt om een nieuwe instantie van de klasse te maken.

exemplaar : een instantie is een unieke kopie van een klasse die een object vertegenwoordigt. Wanneer een nieuw exemplaar van een klasse is gemaakt, zal de JVM een kamer van geheugen voor die klasse-instantie toewijzen.

Gezien het volgende voorbeeld:

public class Person {
    private int id;
    private String name;
    private int age;
    public Person (int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        return result;
    }
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (id != other.id)
            return false;
        return true;
    }
    public static void main(String[] args) {
        //case 1
        Person p1 = new Person(1, "Carlos", 20);
        Person p2 = new Person(1, "Carlos", 20);
        //case 2
        Person p3 = new Person(2, "John", 15);
        Person p4 = new Person(3, "Mary", 17);
    }
}

Voor zaak 1 zijn er twee instanties van de klasse-persoon, maar beide gevallen vertegenwoordigen hetzelfde object.

Voor Case 2 zijn er twee instanties van de klasse-persoon, maar elke instantie vertegenwoordigt een ander object.

Zo klasse, object en instantie zijn verschillende dingen. Object en instantie zijn niet synoniemen zoals wordt gesuggereerd in het antwoord dat is geselecteerd als goed antwoord.


Antwoord 8, Autoriteit 3%

klasse : structuur

object : fysieke manifestatie

Instance: elk object gemaakt op basis van klasse

Referentie: adres van object


Antwoord 9, autoriteit 2%

Als je een programma hebt dat auto’s modelleert, heb je een klasse om auto’s te vertegenwoordigen,
dus in Code zou je kunnen zeggen:

Car someCar = new Car();

someCar is nu een instantie van de klasse Car. Als het programma wordt gebruikt in een reparatiewerkplaats en de someCar vertegenwoordigt uw auto in hun systeem, dan is uw auto het object.

Dus auto is een klasse die elke echte auto kan vertegenwoordigen
someCar is een instantie van de klasse Car en
someCare vertegenwoordigt éénobject uit het echte leven (uw auto)

exemplaar en object worden echter heel vaak door elkaar gebruikt als het gaat om het bespreken van codering


Antwoord 10, autoriteit 2%

Elke vorm van gegevens die uw computer opslaat en verwerkt, is in de meest elementaire weergave een rij bits. De manier waarop die bits worden geïnterpreteerd, wordt gedaan door gegevenstypen. Gegevenstypen kunnen primitief of complex zijn. Primitieve datatypes zijn bijvoorbeeld int of double. Ze hebben een bepaalde lengte en een specifieke manier van interpreteren. In het geval van een geheel getal wordt meestal het eerste bit gebruikt voor het teken, de andere voor de waarde.

Complexe gegevenstypen kunnen combinaties zijn van primitieve en andere complexe gegevenstypen en worden in Java ‘Klasse’ genoemd.

U kunt het complexe gegevenstype PeopleName definiëren, bestaande uit twee strings met de naam voor- en achternaam. Elke string in Java is een ander complex gegevenstype. Strings in ruil daarvoor worden (waarschijnlijk) geïmplementeerd met behulp van het primitieve gegevenstype char waarvoor Java weet hoeveel bits ze moeten opslaan en hoe ze moeten worden geïnterpreteerd.

Wanneer u een instantie van een gegevenstype maakt, krijgt u een object en uw computers reserveren er wat geheugen voor en onthouden de locatie en de naam van die instantie. Een exemplaar van PeopleName in het geheugen neemt de ruimte in beslag van de twee String-variabelen plus een beetje meer voor de boekhouding. Een geheel getal neemt 32 bits in Java in beslag.

Aan complexe gegevenstypen kunnen methoden worden toegewezen. Methoden kunnen acties uitvoeren op hun argumenten of op de instantie van het gegevenstype van waaruit u deze methode aanroept. Als je twee exemplaren van PeopleName hebt, p1 en p2 genaamd, en je roept een methode p1.getFirstName() aan, dan wordt meestal de voornaam van de eerste persoon geretourneerd, maar niet die van de tweede persoon.


Antwoord 11, autoriteit 2%

Het concept achter klassen en objecten is om logica in een enkele programmeereenheid in te kapselen. Klassenzijn de blauwdrukken waarvan objecten worden gemaakt.

Hier een voorbeeld van een klasse die een auto vertegenwoordigt:

public class Car {
    int currentSpeed;
    String name;
    public void accelerate() {  
    }
    public void park() {
    }
    public void printCurrentSpeed() {
    }
}

U kunt als volgt instantiesvan de objectauto maken:

Car audi = new Car();
Car toyota = new Car();

Ik heb het voorbeeld uit deze tutorial

genomen


Antwoord 12

Klasse

  • Het heeft een logisch bestaan, d.w.z. er wordt geen geheugenruimte toegewezen wanneer het wordt gemaakt.

  • Het is een verzameling objecten.

  • Een klasse kan worden beschouwd als een blauwdruk om objecten te maken.

    • Het is gemaakt met behulp van klassezoekwoord

    • Een klasse definieert de methoden en gegevensleden die bezeten zijn door objecten.


Object

  • Het heeft fysiek bestaan, d.w.z. geheugenruimte wordt toegewezen wanneer deze is gemaakt.

  • Het is een exemplaar van een klasse.

  • Een object is een unieke entiteit die gegevensorganen en ledenfuncties samen in OOP-taal bevat.

    • Er is gemaakt met een nieuw zoekwoord

    • Een object specificeert de implementaties van de methoden en de waarden die door de gegevensleden in de klas worden bezeten.


Antwoord 13

Een klasse is een blauwdruk die nodig is om een ​​object (= instantie) te maken.

Het verschil tussen een object en een instantie is, een object is iets en een instantie is een relatie.

Met andere woorden, bijvoorbeeld beschrijft de relatie van een object aan de klas waar het object van is gemaakt.


Antwoord 14

Het definitie “object is een instantie van een klas”, is conceptueel verkeerd, maar correct volgens de implementatie. Eigenlijk worden de objectgeoriënteerde functies uit het echte leven afgenomen, voor het focussen van de geest van programmeur van meer tot minder. In echte leven zijn klassen ontworpen om het object te beheren. Voor bijv. We hebben de menselijke wezens een kaste, religie, nationaliteit en nog veel meer. Deze gieten, religie, nationaliteit zijn de lessen en hebben geen bestaan ​​zonder menselijke wezens. Maar in de implementatie bestaat er geen voorwerpen zonder klassen.
Object- object is een discrete entiteit met een goed gedefinieerd kenmerk. Hier betekent discreet iets dat het uniek maakt van andere. Goed gedefinieerd kenmerk is in sommige context logisch.
Classificatie van het object met een aantal gemeenschappelijk gedrag of objecten van een gemeenschappelijk type.


Antwoord 15

Hoewel de bovenstaande antwoorden correct zijn, zou een andere manier van denken over klassen en objecten zijn om echte wereldvoorbeelden te gebruiken: een dier met de naam van de naam kan objecten zoals kat, hond of vis bevatten. Een object met een titel van Bijbel zou van klasboek zijn, enz. Klassen zijn algemeen, objecten zijn specifiek. Dit gedachte voorbeeld heeft me geholpen toen ik Java aan het aan het leren was.


Antwoord 16

Klasse is een sjabloon of type. Een object is een exemplaar van de klasse.

Bijvoorbeeld:

public class Tweet {
}
Tweet newTweet = new Tweet();

Tweet is een klasse en Newtweet is een object van de klasse.

Other episodes