Java klase i objekti

1. Pregled

U ovom ćemo brzom vodiču pogledati dva osnovna gradivna elementa programskog jezika Java - klase i objekte. Oni su osnovni koncepti objektno orijentiranog programiranja (OOP) koje koristimo za modeliranje entiteta iz stvarnog života.

U OOP-u, klase su nacrti ili predlošci za objekte. Koristimo ih za opisivanje vrsta entiteta.

S druge strane, predmeti su živa bića, stvorena iz klasa. Sadrže određena stanja u svojim poljima i svojim metodama predstavljaju određeno ponašanje.

2. Nastava

Jednostavno rečeno, klasa predstavlja definiciju ili vrstu objekta. U Javi klase mogu sadržavati polja, konstruktore i metode.

Pogledajmo primjer korištenja jednostavne Java klase koja predstavlja Automobil:

klasa Car {// polja Vrsta niza; Žičani model; Boja žice; brzina int; // konstruktor Car (vrsta niza, model niza, boja niza) {this.type = type; this.model = model; this.color = boja; } // metode int povećanje brzine (prirast int) {this.speed = this.speed + prirast; vrati ovo.brzina; } // ...} 

Ova Java klasa predstavlja automobil općenito. Iz ove klase možemo stvoriti bilo koju vrstu automobila. Koristimo polja za zadržavanje stanja, a konstruktor za stvaranje objekata iz ove klase.

Svaka Java klasa prema zadanim postavkama ima prazan konstruktor. Koristimo ga ako ne pružimo određenu implementaciju kao što smo to učinili gore. Evo kako bi zadani konstruktor tražio naš Automobil razred:

Automobil(){} 

Ovaj konstruktor jednostavno inicijalizira sva polja objekta sa njihovim zadanim vrijednostima. Nizovi su inicijalizirani u null a cijeli brojevi na nulu.

Sada naša klasa ima specifični konstruktor jer želimo da naši objekti imaju definirana polja kada ih kreiramo:

Automobil (vrsta niza, model niza) {// ...} 

Da rezimiramo, napisali smo nastavu koja definira automobil. Njegova su svojstva opisana poljima koja sadrže stanje objekata klase, a ponašanje je opisano pomoću metoda.

3. Predmeti

Dok se predavanja prevode tijekom vremena kompajliranja, objekti se stvaraju iz klasa u vrijeme izvođenja.

Objekti klase nazivaju se instance, a mi ih kreiramo i inicijaliziramo konstruktorima:

Fokus automobila = novi automobil ("Ford", "Focus", "crveni"); Car auris = novi automobil ("Toyota", "Auris", "plavi"); Auto golf = novi automobil ("Volkswagen", "Golf", "zeleni"); 

Sad smo stvorili drugačije Automobil predmeti, svi iz jedne klase. To je poanta svega, definirati nacrt na jednom mjestu, a zatim ga ponovno koristiti na mnogo mjesta.

Zasad ih imamo tri Automobil objekti i svi su parkirani jer im je brzina jednaka nuli. To možemo promijeniti pozivajući se na naš povećatibrzinu metoda:

focus.increaseSpeed ​​(10); auris.increaseSpeed ​​(20); golf.increaseSpeed ​​(30); 

Sad smo promijenili stanje automobila - svi se kreću različitim brzinama.

Nadalje, možemo i trebamo definirati kontrolu pristupa našoj klasi, njezinim konstruktorima, poljima i metodama. To možemo učiniti korištenjem modifikatora pristupa, kao što ćemo vidjeti u sljedećem odjeljku.

4. Modifikatori pristupa

U prethodnim primjerima izostavili smo modifikatore pristupa radi pojednostavljenja koda. Čineći to, mi smo zapravo koristili zadani modifikator paket-privatni. Taj modifikator omogućuje pristup klasi iz bilo koje druge klase u istom paketu.

Obično bismo koristili javnost modifikator za konstruktore koji omogućuje pristup svim ostalim objektima:

javni automobil (vrsta niza, model niza, boja niza) {// ...} 

Svako polje i metoda u našoj klasi trebali bi također definirati kontrolu pristupa pomoću određenog modifikatora. Nastava obično ima javnost modifikatori, ali mi nastojimo zadržati svoja polja privatni.

Polja drže stanje našeg objekta, stoga želimo kontrolirati pristup tom stanju. Neke možemo zadržati privatni, i drugi javnost. To postižemo specifičnim metodama koje se nazivaju getteri i setteri.

Pogledajmo našu klasu s potpuno specificiranom kontrolom pristupa:

javni razred automobila {private String type; // ... javni automobil (vrsta niza, model niza, boja niza) {// ...} javni niz getColor () {return boja; } javna praznina setColor (boja niza) {this.color = color; } public int getSpeed ​​() {brzina povratka; } // ...} 

Naš razred je obilježen javnost, što znači da ga možemo koristiti u bilo kojem paketu. Također, konstruktor je javnost, što znači da možemo stvoriti objekt iz ove klase unutar bilo kojeg drugog objekta.

Naša polja su označena privatni, što znači da im nije moguće pristupiti izravno s našeg objekta, ali pružamo im pristup putem getera i postavljača.

The tip i model polja nemaju getere i postavljače, jer sadrže interne podatke naših objekata. Možemo ih definirati samo putem konstruktora tijekom inicijalizacije.

Nadalje, boja može se pristupiti i promijeniti, dok ubrzati može se pristupiti, ali se ne može promijeniti. Proveli smo prilagodbe brzine putem specijaliziranih javnost metode povećatibrzinu () i reduceSpeed ​​().

Drugim riječima, koristimo kontrolu pristupa za inkapsuliranje stanja predmeta.

5. Zaključak

U ovom smo članku prošli kroz dva osnovna elementa jezika Java, klase i objekte i pokazali kako i zašto se koriste. Također smo predstavili osnove kontrole pristupa i demonstrirali njegovu upotrebu.

Da biste naučili druge koncepte Java jezika, predlažemo da kao sljedeći korak pročitate nasljeđivanje, super ključnu riječ i apstraktne klase.

Kompletni izvorni kod za primjer dostupan je na GitHubu.