Java osztályok és objektumok

1. Áttekintés

Ebben a gyors bemutatóban megvizsgáljuk a Java programozási nyelv két alapvető építőelemét - osztályokat és objektumokat. Az objektum-orientált programozás (OOP) alapfogalmai, amelyeket a valós entitások modellezésére használunk.

Az OOP-ban osztályok az objektumok tervrajzai vagy sablonjai. Ezeket az entitástípusok leírására használjuk.

Másrészről, az objektumok élőlények, osztályokból létrehozva. Területeiken belül bizonyos állapotokat tartalmaznak, és bizonyos viselkedéseket mutatnak be módszereikkel.

2. Osztályok

Egyszerűen fogalmazva: egy osztály egy definíciót vagy egy objektumtípust képvisel. A Java-ban az osztályok mezőket, konstruktorokat és módszereket tartalmazhatnak.

Lássunk egy példát egy egyszerű Java osztály használatával, amely a Autó:

class Car {// mezők String type; Vonós modell; Húr színe; int sebesség; // konstruktor Car (String type, String model, String color) {this.type = type; ez.modell = modell; ez.szín = szín; } // módszerek int növelésSpeed ​​(int növekmény) {this.sebesség = ez.sebesség + növekmény; adja vissza ezt.sebesség; } // ...} 

Ez a Java osztály általában egy autót képvisel. Ebből az osztályból bármilyen típusú autót létrehozhatunk. A mezők segítségével megtartjuk az állapotot, a konstruktort pedig objektumok létrehozására ebből az osztályból.

Minden Java osztálynak alapértelmezés szerint üres konstruktora van. Akkor használjuk, ha nem biztosítunk konkrét megvalósítást, mint a fentiekben. Így keresse meg az alapértelmezett kivitelező a mi Autó osztály:

Autó(){} 

Ez a konstruktor egyszerűen inicializálja az objektum összes mezőjét az alapértelmezett értékekkel. A karakterláncokat inicializáljuk nulla és egész számok nullára.

Most az osztályunknak van egy speciális konstruktora, mert azt akarjuk, hogy objektumaink mezejét definiálják, amikor létrehozzuk őket:

Autó (húr típus, húr modell) {// ...} 

Összefoglalva, írtunk egy osztályt, amely meghatározza az autót. Tulajdonságait mezők írják le, amelyek az osztály objektumainak állapotát tartalmazzák, viselkedését pedig módszerekkel írják le.

3. Tárgyak

Míg az osztályokat fordítás közben fordítják, az objektumok futás közben osztályokból jönnek létre.

Az osztály objektumait példányoknak nevezzük, ezeket konstruktorokkal hozunk létre és inicializáljuk:

Autófókusz = új autó ("Ford", "Focus", "piros"); Car auris = új autó ("Toyota", "Auris", "kék"); Autó golf = új autó ("Volkswagen", "Golf", "zöld"); 

Most másokat hoztunk létre Autó tárgyak, mind egyetlen osztályból. Ez az egész lényege, hogy a tervet egy helyen definiáljuk, majd sokszor sok helyen újra felhasználjuk.

Eddig hárman vannak Autó tárgyakat, és mindannyian parkolnak, mivel a sebességük nulla. Ezen változtathatunk a sajátunk meghívásával sebesség növelése módszer:

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

Most megváltoztattuk autóink állapotát - mind különböző sebességgel haladnak.

Továbbá meg kell határoznunk és meg kell határoznunk az osztályunkhoz, annak konstruktoraihoz, mezőihez és módszereihez való hozzáférés-vezérlést. Megtehetjük hozzáférés-módosítók használatával, amint a következő szakaszban láthatjuk.

4. Hozzáférés-módosítók

Az előző példákban a kód egyszerűsítése érdekében kihagytuk a hozzáférés-módosítókat. Ezzel valójában egy alapértelmezett csomag-privát módosítót használtunk. Ez a módosító ugyanahhoz a csomaghoz tartozó bármely más osztályból hozzáférést biztosít az osztályhoz.

Általában a-t használnánk nyilvános módosító a kivitelezők számára, hogy hozzáférést biztosítsanak az összes többi objektumhoz:

nyilvános autó (húr típus, húr modell, húr színe) {// ...} 

Osztályunk minden mezőjének és metódusának meg kell határoznia a hozzáférés-vezérlést egy adott módosítóval. Az osztályoknak általában van nyilvános módosítók, de hajlamosak vagyunk megtartani a mezőinket magán.

A mezők megtartják objektumunk állapotát, ezért szeretnénk ellenőrizni az adott állapot elérését. Néhányat megtarthatunk magán, és mások nyilvános. Ezt speciális módszerekkel, ún. Getterek és szetterek segítségével érjük el.

Vessünk egy pillantást osztályunkra, teljesen meghatározott hozzáférés-vezérléssel:

public class Car {private String type; // ... public Car (karakterlánc típusa, karakterlánc modell, karakterlánc színe) {// ...} public karakterlánc getColor () {return color; } public void setColor (karakterlánc színe) {this.color = color; } public int getSpeed ​​() {visszatérési sebesség; } // ...} 

Osztályunk meg van jelölve nyilvános, ami azt jelenti, hogy bármilyen csomagban felhasználhatjuk. A kivitelező is nyilvános, ami azt jelenti, hogy ebből az osztályból létrehozhatunk objektumot bármely más objektumon belül.

A mezőink meg vannak jelölve magán, ami azt jelenti, hogy nem érhetők el közvetlenül az objektumunkról, de hozzáférést biztosítunk hozzájuk getterek és beállítók segítségével.

A típus és modell a mezőknek nincsenek ugróik és beállítóik, mert tárolják objektumaink belső adatait. Csak a konstruktoron keresztül definiálhatjuk őket az inicializálás során.

Továbbá a szín hozzáférhető és megváltoztatható, míg sebesség csak hozzáférhető, de nem változtatható meg. Speciálisan hajtottuk végre a sebesség beállítását nyilvános mód sebesség növelése() és csökkentés Sebesség ().

Más szavakkal, hozzáférés-vezérlést használunk az objektum állapotának beágyazására.

5. Következtetés

Ebben a cikkben áttekintettük a Java nyelv két alapvető elemét, az osztályokat és az objektumokat, és megmutattuk, hogyan és miért használják őket. Bemutattuk a belépés-ellenőrzés alapjait és bemutattuk annak használatát.

A Java nyelv egyéb fogalmainak elsajátításához javasoljuk, hogy következő lépésként olvassa el az öröklés, a szuper kulcsszó és az absztrakt osztályok leírását.

A példa teljes forráskódja elérhető a GitHub oldalon.