Kursinnhold
Java Utvidet
Java Utvidet
Getter og Setter
Den beste måten å omgå private tilgangsmodifikator
Alle Java-programmerere bruker konstruksjoner kalt gettere og settere.
Gettere og settere er metoder som følger et spesifikt mønster. De brukes til å omgå private
tilgangsmodifikator og effektivt manipulere felt fra en annen klasse.
Hva gjør gettere og settere?
Enkelt sagt lar setteren oss tildele en verdi til et spesifikt felt beskyttet av private tilgangsmodifikator, mens getteren lar oss hente verdien fra et felt beskyttet av private tilgangsmodifikator.
Syntaksen for en getter og en setter:
Main.java
// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }
Som du kan se i koden over, bruker vi navnekonvensjonen for metodene getFieldName()
og setFieldName()
. Derfor, hvis vi har et felt private String name
og vi lager en getter og en setter med navnene getName()
og setName()
, henholdsvis. Det er også verdt å merke seg at getteren returnerer en verdi av samme type som name
-feltet, mens setteren tar en parameter av samme type som name
-feltet.
Dette lar oss få tilgang til felt som er beskyttet av private
tilgangsmodifikator.
La oss se på et eksempel på tilgang til et privat felt fra Person
-klassen i main
-klassen:
Main.java
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
Som du kan se, bruker vi setter for å tildele en verdi til name
-feltet, og deretter bruker vi getter for å vise verdien av name
-feltet på skjermen. Vær oppmerksom på syntaksen til getter og setter, samt at name
-feltet i Person
-klassen er beskyttet av tilgangsmodifikatoren private
.
Konstruktør vs Getter/Setter
Hva er best å bruke, initialisering gjennom en konstruktør + overstyring av toString()
-metoden, eller bruk av gettere og settere?
Det er definitivt bedre å bruke gettere og settere for å få tilgang til felt som er beskyttet av tilgangsmodifikatoren private
. Dette gir større fleksibilitet i koden og forbedrer lesbarheten. Når du ser bruk av getName()
-metoden i koden, forstår du umiddelbart at denne metoden henter feltet med navnet name
. Det samme gjelder når du ser bruk av setName()
-metoden, du forstår umiddelbart at du tildeler en spesifikk verdi til feltet for objektet i klassen der det brukes. Hvis andre leser koden din, vil de sette pris på å se gettere og settere.
Det er også verdt å merke seg at hvert felt krever sin egen getter og setter. Hvis en klasse har to felt beskyttet av tilgangsmodifikatoren private
, bør klassen ha én getter for hvert felt, altså to gettere og to settere.
La oss se på et eksempel der vi legger til et age
-felt i Person
-klassen:
Main.java
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Som du kan se, har vi opprettet én getter og én setter for hvert felt i Person
-klassen. I main
-metoden initialiserte vi feltene ved hjelp av setteren og viste verdiene deres på skjermen ved hjelp av getteren. Å bruke disse metodene er svært praktisk, og du vil bruke dem ofte i fremtiden.
1. Hva er hensikten med å bruke getters og setters?
2. Hva er syntaksen for en getter-metode i Java?
3. Hva er syntaksen for en setter-metode i Java?
Takk for tilbakemeldingene dine!