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

bookPrivate-modifikator

Sådan skjules felter og metoder for andre klasser

Adgangsmodifikatorer bruges til at kontrollere synligheden og tilgængeligheden af variabler og metoder i Java. De gør det muligt at definere omfanget og begrænse adgangen til bestemte medlemmer af en klasse.

Vi har allerede diskuteret adgangsmodifikatorer i det forrige afsnit. Nu ser vi nærmere på den mest anvendte adgangsmodifikator - private.

Som du ved, kan vi med adgangsmodifikatoren private kun tilgå et felt/metode fra den klasse, hvor det er placeret. Lad os se et eksempel på brugen af private-modifikatoren:

Hvis vi for eksempel ikke ønsker, at en variabel i én klasse skal være synlig eller tilgængelig for en anden klasse, kan vi bruge adgangsmodifikatoren 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æret felterne i Person-klassen som private. Når vi forsøger at initialisere feltet direkte, får vi en fejl, der angiver, at name-feltet har adgangsmodifikatoren private og ikke er tilgængeligt for kald eller ændring i main-metoden.

Sådan initialiseres et privat felt

Den enkleste måde at omgå beskyttelsen på er at bruge initialisering via en konstruktør. På denne måde kan vi kun initialisere objekternes felter, men ikke tilgå disse felter. Lad os se 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 gennem konstruktøren, men vi kan stadig ikke tilgå dette felt og udskrive det ved hjælp af System.out.println(). For at omgå dette kan vi overskrive metoden toString(), så når vi kalder System.out.println(bob);, vises information om dens felter. Lad os 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 har endelig formået at vise værdien af feltet name for objektet bob. Dette opnåede vi ved at bruge den overskrevne toString()-metode, hvor vi implementerede logikken for visning af name.

Spørgsmålet opstår, hvorfor har vi brug for denne adgangsmodifikator, hvis vi skal skrive så meget ekstra kode?

Nogle gange findes der variabler med samme navn i forskellige klasser, og i sådanne tilfælde er det nødvendigt at skjule variablerne i disse klasser, så andre klasser ikke får adgang til unødvendige felter. Dette forbedrer markant bekvemmeligheden ved at skrive kode generelt, når man forstår, hvilket felt der tilhører hvilken klasse.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 2.63

bookPrivate-modifikator

Stryg for at vise menuen

Sådan skjules felter og metoder for andre klasser

Adgangsmodifikatorer bruges til at kontrollere synligheden og tilgængeligheden af variabler og metoder i Java. De gør det muligt at definere omfanget og begrænse adgangen til bestemte medlemmer af en klasse.

Vi har allerede diskuteret adgangsmodifikatorer i det forrige afsnit. Nu ser vi nærmere på den mest anvendte adgangsmodifikator - private.

Som du ved, kan vi med adgangsmodifikatoren private kun tilgå et felt/metode fra den klasse, hvor det er placeret. Lad os se et eksempel på brugen af private-modifikatoren:

Hvis vi for eksempel ikke ønsker, at en variabel i én klasse skal være synlig eller tilgængelig for en anden klasse, kan vi bruge adgangsmodifikatoren 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æret felterne i Person-klassen som private. Når vi forsøger at initialisere feltet direkte, får vi en fejl, der angiver, at name-feltet har adgangsmodifikatoren private og ikke er tilgængeligt for kald eller ændring i main-metoden.

Sådan initialiseres et privat felt

Den enkleste måde at omgå beskyttelsen på er at bruge initialisering via en konstruktør. På denne måde kan vi kun initialisere objekternes felter, men ikke tilgå disse felter. Lad os se 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 gennem konstruktøren, men vi kan stadig ikke tilgå dette felt og udskrive det ved hjælp af System.out.println(). For at omgå dette kan vi overskrive metoden toString(), så når vi kalder System.out.println(bob);, vises information om dens felter. Lad os 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 har endelig formået at vise værdien af feltet name for objektet bob. Dette opnåede vi ved at bruge den overskrevne toString()-metode, hvor vi implementerede logikken for visning af name.

Spørgsmålet opstår, hvorfor har vi brug for denne adgangsmodifikator, hvis vi skal skrive så meget ekstra kode?

Nogle gange findes der variabler med samme navn i forskellige klasser, og i sådanne tilfælde er det nødvendigt at skjule variablerne i disse klasser, så andre klasser ikke får adgang til unødvendige felter. Dette forbedrer markant bekvemmeligheden ved at skrive kode generelt, når man forstår, hvilket felt der tilhører hvilken klasse.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3
some-alt