OBJEKTINIS PROGRAMAVIMAS
Java nuorodų tipai
Nuorodos tipo kintamasis nelaiko visų objekto duomenų savyje. Jis nurodo objektą, per kurį galime pasiekti jo atributus ir metodus.
Primityvi reikšmė ir nuoroda
Primityvusis kintamasis, pavyzdžiui int kiekis = 3;, saugo pačią reikšmę 3. Nuorodos tipo kintamasis, pavyzdžiui Puodelis manoPuodelis, saugo nuorodą į konkretų objektą.
| Savybė | Primityvusis tipas | Nuorodos tipas |
|---|---|---|
| Pavyzdys | int, double, boolean | Klasė, masyvas, String, sąsaja |
| Kintamasis saugo | Pačią reikšmę | Nuorodą į objektą arba null |
| Metodai | Neturi | Objektas gali turėti metodų |
| Numatytoji atributo reikšmė | Priklauso nuo tipo, pvz., 0 | null |
Ji leidžia Java virtualiajai mašinai rasti objektą. Programuotojui nereikia žinoti ar valdyti tikro jo adreso atmintyje.
Klasės objektas ir nuoroda
class Puodelis {
String spalva;
}
public class Main {
public static void main(String[] args) {
Puodelis manoPuodelis = new Puodelis();
manoPuodelis.spalva = "mėlyna";
System.out.println(manoPuodelis.spalva);
}
}mėlyna
Puodelisaprašo naują nuorodos tipą.new Puodelis()sukuria naują objektą.manoPuodelisgauna nuorodą į sukurtą objektą.- Per taško operatorių pasiekiamas to objekto atributas
spalva. println()parodo objekte išsaugotą tekstą.
Dvi nuorodos į tą patį objektą
Priskyrus vieną nuorodos kintamąjį kitam, objektas nenukopijuojamas. Nukopijuojama nuoroda:
Puodelis pirmas = new Puodelis();
pirmas.spalva = "balta";
Puodelis antras = pirmas;
antras.spalva = "žalia";
System.out.println(pirmas.spalva);
System.out.println(antras.spalva);žalia
žalia
- Sukuriamas tik vienas
Puodelisobjektas. antras = pirmasneprideda naujo puodelio.- Abu kintamieji nurodo tą patį objektą.
- Spalvą pakeitus per
antras, pakeičiamas bendras objektas. - Todėl per abi nuorodas perskaitoma ta pati nauja spalva.
Ką reiškia null?
Puodelis puodelis = null;
System.out.println(puodelis);
// puodelis.spalva sukeltų NullPointerExceptionnull
null reiškia, kad kintamasis šiuo metu nenurodo jokio objekto. Bandymas per tokią nuorodą pasiekti atributą ar iškviesti metodą sukelia NullPointerException.
Kas Java kalboje yra nuorodos tipai?
- Klasės ir jų objektai, pavyzdžiui,
PuodelisarScanner. - String – tekstui skirta klasė, nors ją dažnai naudojame panašiai kaip paprastą tipą.
- Masyvai, net jei jų elementai yra primityvieji, pavyzdžiui,
int[]. - Sąsajos – nuoroda gali nurodyti sąsają įgyvendinančios klasės objektą.
- Enum ir kolekcijos, pavyzdžiui,
ArrayListarHashMap.
int[] pazymiai = {8, 9, 10};
String vardas = "Rūta";
System.out.println(pazymiai[0]);
System.out.println(vardas.length());8
4
pazymiai nurodo masyvo objektą, o vardas – String objektą. Todėl galime pasiekti masyvo elementą ir iškviesti teksto metodą length().
Svarbiausia prisiminti
newpaprastai sukuria naują objektą.- Nuorodos kintamasis leidžia tą objektą pasiekti.
- Kelios nuorodos gali nurodyti tą patį objektą.
nullreiškia, kad nuoroda objekto šiuo metu neturi.- Priskiriant nuorodą kitam kintamajam pats objektas automatiškai nekopijuojamas.

