Övning 4

När nya objekt skapas, dvs. vid anrop till new, vill man ofta ha möjlighet att vid skapandet tala om vilka värden attributen (instansvariablerna) ska ha. Detta är möjligt genom att skriva konstruktorer.
  1. Klipp in följande kod för konstruktorn i Datum-klassen. Det är vanligt att konstruktorerna placeras direkt efter instansvariablerna.
          public Datum(int a, int m, int d) {
    	ar = a;
    	manad = m;
    	dag = d;
        }
    
    
    Byt ut dessa rader i exempel 3:
    	Datum date;          // Deklarera ett Datum
    	date = new Datum();  // Skapa ett Datum-objekt
    
    	date.setAr(1999);
    	date.setManad(12);
    	date.setDag(24);
    
    mot ett anrop av nya konstruktorn i stil med
    	Datum date = new Datum(/* Komplettera själv */);
    
    Tycker du att den nya konstruktorn är användbar?

    Notera att konstruktorer inte skrivs med returtyp.

  2. Försök nu kompilera dina andra huvudprogram. Går det?

    Förklaringen till att det (väl) inte går är att java inte hittar en konstruktor Datum() alls. Så länge en klass inte specificerat en egen konstruktor, tillhandahåller java en konstruktor utan parametrar. Men när man väl specificerat en konstruktor, så måste man även specifiera en parameterlös konstruktor, ifall man vill ha en sådan. (Anm. Kan du tänka dig fall när man inte vill ha en parameterlös konstruktor?)

    Uppgift: Specificera en parameterlös konstruktor! (Du kan välja att sätta vilket datum du vill här.) Kontrollera att alla huvudprogram åter fungerar.


Last modified: Wed Nov 16 15:08:13 MET 2005