Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Private-modifikator | Avanserte Klasser
Java Utvidet

bookPrivate-modifikator

Hvordan skjule felt og metoder fra en annen klasse

Tilgangsmodifikatorer brukes til å kontrollere synlighet og tilgjengelighet for variabler og metoder i Java. De lar oss definere omfanget og begrense tilgangen til bestemte medlemmer av en klasse.

Vi har allerede diskutert tilgangsmodifikatorer i forrige seksjon. Nå skal vi se nærmere på den mest brukte tilgangsmodifikatoren – private.

Som du vet, med tilgangsmodifikatoren private, kan vi kun få tilgang til et felt/metode fra klassen det befinner seg i. La oss se på et eksempel på bruk av private-modifikatoren:

For eksempel, hvis vi ikke ønsker at en variabel i én klasse skal være synlig eller tilgjengelig for en annen klasse, kan vi bruke tilgangsmodifikatoren private:

Main.java

Main.java

copy
123456789101112131415
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }

Vi har erklært feltene i Person-klassen som private. Når vi prøver å initialisere feltet direkte, får vi en feil som indikerer at name-feltet har tilgangsmodifikatoren private og ikke er tilgjengelig for å kalles eller endres i main-metoden.

Hvordan initialisere et privat felt

Den enkleste måten å omgå beskyttelsen på er å bruke initialisering gjennom en konstruktør. På denne måten kan vi kun initialisere feltene til objektene, men ikke få tilgang til disse feltene. La oss se på et eksempel:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }

Vi kunne initialisere feltet name gjennom konstruktøren, men vi kan fortsatt ikke få tilgang til dette feltet og skrive det ut med System.out.println(). For å omgå dette kan vi overstyre metoden toString() slik at når vi kaller System.out.println(bob);, vises informasjon om feltene. La oss se på et eksempel:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }

Vi klarte endelig å vise verdien til name-feltet i bob-objektet. Dette oppnådde vi ved å bruke den overstyrte toString()-metoden, hvor vi implementerte logikken for å vise name.

Spørsmålet oppstår: Hvorfor trenger vi denne tilgangsmodifikatoren hvis vi må skrive så mye ekstra kode?

Noen ganger finnes det variabler med samme navn i ulike klasser, og i slike tilfeller er det nødvendig å skjule variablene i disse klassene slik at andre klasser ikke får tilgang til unødvendige felt. Dette forbedrer i stor grad oversikten og gjør det enklere å skrive kode når du forstår hvilket felt som tilhører hvilken klasse.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain more about the different access modifiers in Java?

Why is it important to hide fields and methods from other classes?

Can you show an example of using getters and setters to access private fields?

Awesome!

Completion rate improved to 2.63

bookPrivate-modifikator

Sveip for å vise menyen

Hvordan skjule felt og metoder fra en annen klasse

Tilgangsmodifikatorer brukes til å kontrollere synlighet og tilgjengelighet for variabler og metoder i Java. De lar oss definere omfanget og begrense tilgangen til bestemte medlemmer av en klasse.

Vi har allerede diskutert tilgangsmodifikatorer i forrige seksjon. Nå skal vi se nærmere på den mest brukte tilgangsmodifikatoren – private.

Som du vet, med tilgangsmodifikatoren private, kan vi kun få tilgang til et felt/metode fra klassen det befinner seg i. La oss se på et eksempel på bruk av private-modifikatoren:

For eksempel, hvis vi ikke ønsker at en variabel i én klasse skal være synlig eller tilgjengelig for en annen klasse, kan vi bruke tilgangsmodifikatoren private:

Main.java

Main.java

copy
123456789101112131415
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }

Vi har erklært feltene i Person-klassen som private. Når vi prøver å initialisere feltet direkte, får vi en feil som indikerer at name-feltet har tilgangsmodifikatoren private og ikke er tilgjengelig for å kalles eller endres i main-metoden.

Hvordan initialisere et privat felt

Den enkleste måten å omgå beskyttelsen på er å bruke initialisering gjennom en konstruktør. På denne måten kan vi kun initialisere feltene til objektene, men ikke få tilgang til disse feltene. La oss se på et eksempel:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }

Vi kunne initialisere feltet name gjennom konstruktøren, men vi kan fortsatt ikke få tilgang til dette feltet og skrive det ut med System.out.println(). For å omgå dette kan vi overstyre metoden toString() slik at når vi kaller System.out.println(bob);, vises informasjon om feltene. La oss se på et eksempel:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }

Vi klarte endelig å vise verdien til name-feltet i bob-objektet. Dette oppnådde vi ved å bruke den overstyrte toString()-metoden, hvor vi implementerte logikken for å vise name.

Spørsmålet oppstår: Hvorfor trenger vi denne tilgangsmodifikatoren hvis vi må skrive så mye ekstra kode?

Noen ganger finnes det variabler med samme navn i ulike klasser, og i slike tilfeller er det nødvendig å skjule variablene i disse klassene slik at andre klasser ikke får tilgang til unødvendige felt. Dette forbedrer i stor grad oversikten og gjør det enklere å skrive kode når du forstår hvilket felt som tilhører hvilken klasse.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 3
some-alt