Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

9.2.7 Oletusmuodostaja (default constructor)

Nyt ei kuitenkaan voida esitellä oliota ilman alkuarvoa

	Aika aika = new Aika();

Kääntäjä antaisi esimerkiksi virheilmoituksen:

	"Aikatesti.java": Error #: 300 : constructor Aika() not found in class Aika at line 16, column 21

Parametritonta muodostajaa sanotaan oletusmuodostajaksi ( default constructor). Sellainen on luokalla aina ilman muuta, jos luokalle ei ole esitelty yhtään muodostajaa. Jos luokalle esitellään muodostaja, ei oletusmuodostaja enää tulekaan automaattisesti.

Meidän pitäisi päättää nyt paljonko kellomme on, jos sitä ei erikseen ilmoiteta. Olkoon kello vaikka 0:0, eli keskiyö. Esittelemme oletusmuodostajan

olioalk\Aika2.java - lisätään oletusmuodostaja

	...
	public class Aika2 {
	
	  private int h=0, m=0;
	
	  public Aika2() { // Oletusmuodostaja
	    h = 0; m = 0;
	  }
	
	  public Aika2(int h,int m) { // Muodostaja
	    this.h = h;
	    this.m = m;
	  }
	
	...
	  public static void main(String[] args) {
	    Aika2 a1 = new Aika2(12,15);
	...
	    a3.lisaa(39);    a3.tulosta();
	    Aika2 aika = new Aika2();
	    aika.tulosta();
	  }
	
	}

Tässä tapauksessa oletusmuodostajaksi olisi kelvannut myös tyhjä lohko. Miksi?

	  public Aika2() {  }


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys