Deo zbornika Učimo Javu
Pravljenje objekata
Da bismo kreirali objekat klase, moramo koristi ključnu riječ new
za kojom slijedi poziv konstruktora.
Sljedeći program kreira objekt tipa Koordinata
i ispisuje njegove atribute:
class Koordinata {
double x;
double y;
}
class Stampac {
public static void main(String[] args) {
Koordinata ishodiste; // ovime smo deklarirali (ne i alocirali) objekt ishodiste
ishodiste = new Koordinata(); // sada smo uz pomoc konstruktora alocirali (kreirali objekt)
ishodiste.x = 0.0; // Inicijaliziramo njegove atribute
ishodiste.y = 0.0;
// Ispisujemo podatke o objektu ishodiste
System.out.println("Ishodiste ima koordinate " + ishodiste.x + ", " + ishodiste.y);
}
}
Točka .
je tzv. separator pristupa članovima. Poziv konstruktora uz ključnu riječ new
potreban je za alociranje objekta.
Više objekata iste klase
Uglavnom, klase će imati više od jedne instance. Sljedeći program kreira dva različita objekta tipa Koordinata
i ispisuje njihove atribute.
class Koordinata {
double x;
double y;
}
class Stampac {
public static void main(String[] args) {
Koordinata ishodiste; // deklariramo objekat ishodiste
Koordinata jedan; // deklariramo objekat jedan
ishodiste = new Koordinata(); // alociramo ishodiste pomocu konstruktora klase
jedan = new Koordinata(); // alociramo jedan pomocu konstruktora klase
// postavljamo vrijednosti atributa
ishodiste.x = 0.0;
ishodiste.y = 0.0;
jedan.x = 1.0;
jedan.y = 0.0;
// ispisujemo koordinate ovih dviju tocaka
System.out.println("Ishodiste ima koordinate " + ishodiste.x + ", " + ishodiste.y);
System.out.println("Tocka jedan ima koordinate " + jedan.x + ", " + jedan.y);
}
}
Obrada:
% javac Stampac.java
% java Stampac
Ishodiste ima koordinate 0.0, 0.0
Tocka jedan ima koordinate 1.0, 0.0
Variable jedan
i ishodiste
su dvije različite referentne varijable koje pokazuju na dva različita objekta.
Više referenci na isti objekat
Moguće je da dvije varijable pokazuju na isti objekt. Kad na neki objekt ne pokazuje ni jedna referentna varijabla, on će biti označen za uklanjanje (garbage collection).
Sljedeći program deklarira dvije varijable tipa Koordinata
, kreira jedan objekt tipa Koordinata
i pridružuje taj objekt objema varijablama. Te se dvije varijable smatraju jednakima:
class Koordinata {
double x;
double y;
}
class Stampac {
public static void main(String[] args) {
Koordinata ishodiste1; // deklariramo objekat ishodiste1
Koordinata ishodiste2; // deklariramo objekat ishodiste2
ishodiste1 = new Koordinata(); // alociramo ishodiste1 pomocu konstruktora klase
ishodiste2 = ishodiste1; // definiramo referentnu varijablu za ishodiste1
// Postavljamo vrijednosti atributa (samo za ishodiste1)
ishodiste1.x = 0.0;
ishodiste1.y = 0.0;
// print
System.out.println("Tocka ishodiste1 ima koordinate " + ishodiste1.x + ", " + ishodiste1.y);
System.out.println("Tocka ishodiste2 ima koordinate " + ishodiste2.x + ", " + ishodiste2.y);
}
}
Obrada i izlaz:
% javac Stampac.java
% java Stampac
Tocka ishodiste1 ima koordinate 0.0, 0.0
Tocka ishodiste2 ima koordinate 0.0, 0.0
Primijetite da su ishodiste1
i ishodiste2
dvije različite varijable koje referenciraju isti objekt.
Izvor: Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin, priredio Damjan Pavlica.