Et objekt er en repræsentation af en ting, og indeholder data om den. Et eksempel kunne være et person-objekt der indeholder et navn, en alder, en adresse, og interesser. I Java findes der mange klasser som er meget brugbare som programmør.
Her er en klasse for en "Person":
publicclassPerson{privateStringnavn;privateintalder;privateStringadresse;privateString[]interesser;publicPerson(Stringnavn,intalder,Stringadresse,String[]interesser){this.navn=navn;this.alder=alder;this.adresse=adresse;this.interesser=interesser;}}public Person() er en konstruktør for en Person. Dette sætter objektets navn, alder, adresse, og interesser til de argumenter konstruktøren har fået.Variablerne er sat til privat pga.Indkapsling, som sørger for at de ikke kan ændres udefra. Men de kan dog stadig læses med disse metoder:
publicStringgetNavn(){returnthis.navn;}publicintgetAlder(){returnthis.alder;}publicStringgetAdresse(){returnthis.adresse;}publicString[]getInteresser(){returnthis.interesser;}Når vi har dette kan vi lave et nyt Person-objekt i vores main-klasse med navnet Jens, alderen 21, adressen "En adresse", og interesserne "En interesse" og "En anden interesse":
publicclassOOPEksempel{publicstaticvoidmain(String[]args){String[]interesser={"En interesse","En anden interesse"};// Laver et array med interesserPersonjens=newPerson("Jens",21,"En adresse",interesser);// Laver et nyt person objekt}}Så kan vi også printe Jens' data ud, med hjælp af de metoder vi definerede i Person klassen (og lidt regex som fjerner [ og ] fra arrayet):
System.out.println(jens.getNavn()+", "+jens.getAlder()+":");System.out.println(jens.getAdresse());System.out.println("Interesser: "+Arrays.toString(jens.getInteresser()).replaceAll("[\\[\\]]",""));// .replaceAll ændrer alle matches med den givne regex. Sæt den ind i regexr.com for at se hvad den gørDette giver:
Jens, 21:En adresseInteresser: En interesse, En anden interesse
Objekter kan også indeholde metoder, som ofte ændrer på objektets data.
Eksempler på indbyggede objekter i java:
- File(String pathname)
- Point(int x, int y)
- ArrayList()
Hvis en klasse udvider (extends) en anden klasse, får den alle egenskaber og metoder af den klasse. Den klasse bliver så til en "subclass", og den klasse den arver egenskaber fra bliver til "superclassen".
Her bruges nøgleordet "protected" i stedet for private, fordi at subclassen ikke har adgang til variablen hvis den er private
classBil{protectedStringtype="Bil";protectedvoiddyt(){System.out.println("Dyyyt!");}}publicclassTeslaModel3extendsBil{privateStringmodelNavn="Tesla Model 3";publicstaticvoidmain(String[]args){TeslaModel3bil=newTeslaModel3();// Laver en ny TeslaModel3System.out.println(bil.type+": "+bil.modelNavn);// Printer type (fra Bil klassen) og bilens modelNavnbil.dyt();// Kalder dyt() metoden fra Bil klassen}}