Java-klasser og objekter

1. Oversikt

I denne raske opplæringen ser vi på to grunnleggende byggesteiner i Java-programmeringsspråket - klasser og objekter. De er grunnleggende konsepter for Object Oriented Programming (OOP), som vi bruker til å modellere virkelige enheter.

I OOP, klasser er tegninger eller maler for objekter. Vi bruker dem til å beskrive typer enheter.

På den andre siden, objekter er levende enheter, skapt fra klasser. De inneholder visse tilstander innenfor sine felt og presenterer visse atferd med metodene sine.

2. Klasser

Enkelt sagt, en klasse representerer en definisjon eller en type objekt. I Java kan klasser inneholde felt, konstruktører og metoder.

La oss se et eksempel med en enkel Java-klasse som representerer en Bil:

klasse Bil {// felt Strengtype; Strengmodell; Strengfarge; int hastighet; // konstruktørbil (strengtype, strengmodell, strengfarge) {this.type = type; this.model = modell; denne. farge = farge; } // metoder int økeSpeed ​​(int-trinn) {this.speed = this.speed + inkrement; returner dette. hastighet; } // ...} 

Denne Java-klassen representerer en bil generelt. Vi kan lage alle typer biler fra denne klassen. Vi bruker felt for å holde staten og en konstruktør for å lage objekter fra denne klassen.

Hver Java-klasse har som standard en tom konstruktør. Vi bruker den hvis vi ikke gir en spesifikk implementering som vi gjorde ovenfor. Slik ser standardkonstruktøren ut etter vår Bil klasse:

Bil(){} 

Denne konstruktøren initialiserer ganske enkelt alle felt i objektet med standardverdiene. Strenger initialiseres til null og heltall til null.

Nå har klassen vår en spesifikk konstruktør fordi vi vil at objektene våre skal ha felt definert når vi oppretter dem:

Bil (strengtype, strengmodell) {// ...} 

For å oppsummere skrev vi en klasse som definerer en bil. Egenskapene er beskrevet av felt som inneholder tilstanden til objekter i klassen, og dens oppførsel er beskrevet ved hjelp av metoder.

3. Objekter

Mens klassene oversettes i løpet av kompileringstiden, objekter opprettes fra klasser ved kjøretid.

Objekter fra en klasse kalles forekomster, og vi lager og initialiserer dem med konstruktører:

Bilfokus = ny bil ("Ford", "Focus", "rød"); Car auris = new Car ("Toyota", "Auris", "blue"); Bilgolf = ny bil ("Volkswagen", "Golf", "grønn"); 

Nå har vi skapt forskjellige Bil objekter, alt fra en enkelt klasse. Dette er poenget med det hele, å definere tegningen på ett sted, og deretter å gjenbruke den mange ganger mange steder.

Så langt har vi tre Bil gjenstander, og de er alle parkert siden hastigheten er null. Vi kan endre dette ved å påberope oss Øk hastighet metode:

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

Nå har vi endret tilstanden til bilene våre - de beveger seg alle i forskjellige hastigheter.

Videre kan og bør vi definere tilgangskontroll til klassen vår, dens konstruktører, felt og metoder. Vi kan gjøre det ved å bruke tilgangsmodifikatorer, som vi vil se i neste avsnitt.

4. Få tilgang til modifikatorer

I de foregående eksemplene har vi utelatt tilgangsmodifikatorer for å forenkle koden. Ved å gjøre det brukte vi faktisk en standardpakke-privat modifikator. Denne modifisereren gir tilgang til klassen fra hvilken som helst annen klasse i samme pakke.

Vanligvis bruker vi en offentlig modifikator for konstruktører for å tillate tilgang fra alle andre objekter:

offentlig bil (strengtype, strengmodell, strengfarge) {// ...} 

Hvert felt og metode i klassen vår burde også ha definert tilgangskontroll av en bestemt modifikator. Klasser har vanligvis offentlig modifikatorer, men vi pleier å beholde feltene våre privat.

Felt holder tilstanden til objektet vårt, derfor vil vi kontrollere tilgangen til den tilstanden. Vi kan beholde noen av dem privat, og andre offentlig. Vi oppnår dette med spesifikke metoder som kalles getters og setters.

La oss ta en titt på klassen vår med fullt spesifisert tilgangskontroll:

offentlig klasse bil {privat streng type; // ... offentlig bil (strengtype, strengmodell, strengfarge) {// ...} offentlig streng getColor () {returfarge; } public void setColor (String color) {this.color = color; } public int getSpeed ​​() {returhastighet; } // ...} 

Klassen vår er merket offentlig, noe som betyr at vi kan bruke den i en hvilken som helst pakke. Også er konstruktøren offentlig, noe som betyr at vi kan lage et objekt fra denne klassen i et hvilket som helst annet objekt.

Våre felt er merket privat, noe som betyr at de ikke er tilgjengelige direkte fra objektet vårt, men vi gir tilgang til dem gjennom getters og setters.

De type og modell felt har ikke getters og setter, fordi de inneholder interne data om objektene våre. Vi kan bare definere dem gjennom konstruktøren under initialiseringen.

Videre er den farge kan nås og endres, mens hastighet kan bare nås, men ikke endres. Vi håndhevet hastighetsjusteringer gjennom spesialiserte offentlig metoder Øk hastighet() og reduceSpeed ​​().

Med andre ord, vi bruker tilgangskontroll for å kapsle inn objektets tilstand.

5. Konklusjon

I denne artikkelen gikk vi gjennom to grunnleggende elementer i Java-språket, klasser og objekter, og viste hvordan og hvorfor de brukes. Vi introduserte også det grunnleggende om tilgangskontroll og demonstrerte bruken.

For å lære andre begreper Java-språk, foreslår vi at du leser om arv, supernøkkelordet og abstrakte klasser som et neste trinn.

Den komplette kildekoden for eksemplet er tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found