ilpostino Skrevet 28. april 2004 Del Skrevet 28. april 2004 nå lanserer jeg enda et "dumt" spørsmål i min dumme-spørsmål-serie her på Java-delen av forumet. jeg har ikke funnet ut hva en konstruktør er; definisjonen om hvorfor den 'skal' være med i en klasse. på Sun sine sider har jeg funnet endel info om hvordan en finner ut informasjon om konstruktøren men ike hva det er og hvorfor den er med... Lenke til kommentar
nrams Skrevet 28. april 2004 Del Skrevet 28. april 2004 En konstruktør ligner på en metode ved at den har hode og kropp. Hodet består av klassenavn og parameterliste. Klienten bruker konstruktøren sammen med det reserverte ordet new for å skape et objekt av klassen. Konstruktøren er den som kjøres når et objekt blir opprettet. public Kunde { private String navn; // Konstruktør - Start public Kunde ( String pnavn ) { navn = pnavn; } // Konstruktør - Slutt public String finnNavn() { return navn; } } Lenke til kommentar
Zamoht Skrevet 25. mai 2004 Del Skrevet 25. mai 2004 En konstruktør, brukes for når det skal lages et nytt objekt av en klasse. Du har for eksempel laget en database med videoer, og vil legge til en ny video. Kostruktoren i videoklassen brukes så for å fylle inn all informasjon du har spesifisert er nødvendig i et videoobjekt. F.eks Navn lengde dvd eller VHS osv.. Lenke til kommentar
EZAccess Skrevet 27. mai 2004 Del Skrevet 27. mai 2004 (endret) Vi har to forskjellige typer konstruktører - Parametrisk (setter inn standard verdier selv) og Standard (standardverdier er satt). Du trenger ikke ha begge to. class Kunde{ private String navn; // Konstruktør - Parametrisk public Kunde ( String pnavn ) { navn = pnavn; } // Standard konstruktør public Kunde() { navn = "Per"; //eller navn = ""; } } Endret 27. mai 2004 av EZAccess Lenke til kommentar
Bodø/Glimt Skrevet 21. januar 2014 Del Skrevet 21. januar 2014 (endret) Hvordan skriver du det hvis du har flere parametere du ønsker å få satt i konstruktøren?Går grunnkurs i programmering (java), og jobber med en oppgave om å lage et system for et enkelt spill. Jeg ønsker at konstruktøren også skal sette karakterens spillertype, på samme måte som name. Hvordan skriver jeg det? På forhånd takk. Her er det jeg har skrevet av fields og constructor. // Spillernavn, karaktertype og karakterhelse private String name; private String type; private int health; /** * Oppretter spiller med navn */ public Player(String username) { name = username; health = 100; } Endret 21. januar 2014 av Camorra Lenke til kommentar
MrL Skrevet 21. januar 2014 Del Skrevet 21. januar 2014 (endret) Hvordan skriver du det hvis du har flere parametere du ønsker å få satt i konstruktøren? Går grunnkurs i programmering (java), og jobber med en oppgave om å lage et system for et enkelt spill. Jeg ønsker at konstruktøren også skal sette karakterens spillertype, på samme måte som name. Hvordan skriver jeg det? På forhånd takk. Her er det jeg har skrevet av fields og constructor Sånn, trenger du flere kan du bare legge til det akkurat slik jeg gjorde, uavhengig av om det er string eller int osv: // Karakterens navn private String name; // Karakterens spillertype private String type; // Karakterens helse private int health; /** * Oppretter spiller med navn */ public Player(String username, String usertype) { name = username; type = usertype; health = 100; } Men jeg anbefaler å heller gjøre det slik, sånn at du slipper å bruke forskjellig navn: // Karakterens navn private String name; // Karakterens spillertype private String type; // Karakterens helse private int health; /** * Oppretter spiller med navn */ public Player(String name, String type) { this.name = name; this.type = type; health = 100; } og bare for ordens skyld, skal du opprette en new Player() nå, må du altså sende med 2 strings. Før: Player spiller1 = new Player("Navn"); Nå: Player spiller1 = new Player("Navn", "Type"); Endret 21. januar 2014 av MrLG Lenke til kommentar
LostOblivion Skrevet 2. februar 2014 Del Skrevet 2. februar 2014 Konstruktører brukes hovedsaklig til å initialisere et objekt til et minimum før man begynner å bruke objektet. En vanlig praksis i Java er å bruke konstruktøren til å initialisere lister og andre datastrukturer til å peke på en tom datastruktur i stedet for at de peker på null. I Java har man den luksusen med at variabler blir satt til null/false/0 av kompilatoren når de blir definert, men i språk som C++ hvor dette ikke er standardoppførsel, bruker man ofte konstruktøren til å initialisere slike variabler til noe fornuftig, null/false/0, eller hva man måtte ønske. C++-standarden sier ingenting om hva som burde ligge i minnet til en ikke-initialisert variabel, så her ligger det ofte hva som helst, avhengig av hva som tilfeldigvis lå i den delen av minnet fra før (garbage). Konstruktører kom tradisjonelt fra erfaringen i C hvor man ikke hadde konstruktører (eller objekter på samme måte), men enkle data structures: struct Vector { double x, y, z; }; int main() { struct Vector direction; direction.x = 0.0; direction.y = 0.0; direction.z = 0.0; } I praksis skrev utviklere i C svært ofte funksjoner for å bygge opp structs: struct Vector* emptyVector() { struct Vector* v = malloc(sizeof struct Vector); v->x = 0.0; v->y = 0.0; v->z = 0.0; return v; } struct Vector* newVector(double x, double y, double z) { struct Vector* v = malloc(sizeof struct Vector); v->x = x; v->y = y; v->z = z; return v; } Dette ble så vanlig praksis at senere objektorienterte språk som C++ og Java bygget slike konstruktører inn som en del av språket: class Vector { double z, y, z; public Vector(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } public Vector() { this(x, y, z); } } Lenke til kommentar
quantum Skrevet 2. februar 2014 Del Skrevet 2. februar 2014 (endret) Litt avhengig av hva man ønsker å oppnå kan man bruke en Factory og/eller en Builder for å opprette instanser (dvs. kapsle inn konstruktøren, den vil jo fortsatt være i bruk). Factory gir muligheten til å abstrahere vekk hvilken implementasjon som brukes, mens Builder gir bedre kontroll på initialiseringen (ryddigere alternativ til å ha utallige konstruktører med ulik parametersignatur). http://en.wikipedia.org/wiki/Factory_pattern http://en.wikipedia.org/wiki/Builder_pattern (artig at det ble liv i denne tråden igjen etter ti år ... :o) Endret 2. februar 2014 av quantum Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå