Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Privat Modifierare | Klasser Avancerat
Java Fördjupad
course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Privat Modifierare

Hur döljer man fält och metoder från en annan klass?

Åtkomstmodifierare används för att kontrollera synlighet och åtkomst till variabler och metoder i Java. De gör det möjligt att definiera omfång och begränsa åtkomst till vissa medlemmar i en klass.

Vi har redan diskuterat åtkomstmodifierare i föregående avsnitt. Nu ska vi titta närmare på den mest använda åtkomstmodifieraren - private.

Som du vet kan vi med åtkomstmodifieraren private endast komma åt ett fält/metod från den klass där det är deklarerat. Låt oss titta på ett exempel på användning av private-modifieraren:

Om vi till exempel inte vill att en variabel i en klass ska vara synlig eller åtkomlig för en annan klass, kan vi använda åtkomstmodifieraren 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 deklarerat fälten i klassen Person som private. När vi försöker initiera fältet direkt, får vi ett felmeddelande som indikerar att fältet name har en private åtkomstmodifierare och inte är tillgängligt för anrop eller modifiering i huvudmetoden.

Hur initierar man ett privat fält?

Det enklaste sättet att kringgå skyddet är att använda initiering via en konstruktor. Med detta tillvägagångssätt kan vi endast initiera objektens fält men inte komma åt dessa fält. Låt oss titta på ett exempel:

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 kunde initiera fältet name via konstruktorn, men vi kan fortfarande inte komma åt detta fält och skriva ut det med System.out.println(). För att kringgå detta kan vi överskrida metoden toString() så att när vi anropar System.out.println(bob); visas information om dess fält. Låt oss titta på ett exempel:

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 lyckades till slut visa värdet av fältet name för objektet bob. Detta uppnådde vi genom att använda den överskuggade metoden toString(), där vi implementerade logiken för att visa name.

Frågan uppstår, varför behöver vi denna åtkomstmodifierare om vi måste skriva så mycket extra kod?

Ibland finns det variabler med samma namn i olika klasser, och i sådana fall är det nödvändigt att dölja variablerna i dessa klasser så att andra klasser inte får åtkomst till onödiga fält. Detta förbättrar avsevärt bekvämligheten vid kodskrivning i allmänhet när du förstår vilket fält som tillhör vilken klass.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Privat Modifierare

Hur döljer man fält och metoder från en annan klass?

Åtkomstmodifierare används för att kontrollera synlighet och åtkomst till variabler och metoder i Java. De gör det möjligt att definiera omfång och begränsa åtkomst till vissa medlemmar i en klass.

Vi har redan diskuterat åtkomstmodifierare i föregående avsnitt. Nu ska vi titta närmare på den mest använda åtkomstmodifieraren - private.

Som du vet kan vi med åtkomstmodifieraren private endast komma åt ett fält/metod från den klass där det är deklarerat. Låt oss titta på ett exempel på användning av private-modifieraren:

Om vi till exempel inte vill att en variabel i en klass ska vara synlig eller åtkomlig för en annan klass, kan vi använda åtkomstmodifieraren 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 deklarerat fälten i klassen Person som private. När vi försöker initiera fältet direkt, får vi ett felmeddelande som indikerar att fältet name har en private åtkomstmodifierare och inte är tillgängligt för anrop eller modifiering i huvudmetoden.

Hur initierar man ett privat fält?

Det enklaste sättet att kringgå skyddet är att använda initiering via en konstruktor. Med detta tillvägagångssätt kan vi endast initiera objektens fält men inte komma åt dessa fält. Låt oss titta på ett exempel:

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 kunde initiera fältet name via konstruktorn, men vi kan fortfarande inte komma åt detta fält och skriva ut det med System.out.println(). För att kringgå detta kan vi överskrida metoden toString() så att när vi anropar System.out.println(bob); visas information om dess fält. Låt oss titta på ett exempel:

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 lyckades till slut visa värdet av fältet name för objektet bob. Detta uppnådde vi genom att använda den överskuggade metoden toString(), där vi implementerade logiken för att visa name.

Frågan uppstår, varför behöver vi denna åtkomstmodifierare om vi måste skriva så mycket extra kod?

Ibland finns det variabler med samma namn i olika klasser, och i sådana fall är det nödvändigt att dölja variablerna i dessa klasser så att andra klasser inte får åtkomst till onödiga fält. Detta förbättrar avsevärt bekvämligheten vid kodskrivning i allmänhet när du förstår vilket fält som tillhör vilken klass.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 3
some-alt