Inkapsling
Inkapsling är i grunden en metod för dataorganisering. Det innebär att organisera data och metoder i form av klasser så att hela programmet i princip är uppbyggt kring klasser och att data och metoder är inkapslade inom dessa klasser. Denna inkapsling ger ett sätt att kontrollera åtkomst till ett objekts interna tillstånd, vilket främjar modularitet, underhållbarhet och säkerhet i ett mjukvarusystem.
Vid inkapsling används åtkomstmodifierare som public
, private
och protected
för att dölja de flesta fält och metoder i en klass och endast exponera de som behöver användas utifrån.
Eftersom det mesta av datan är direkt otillgänglig utanför klassen används getters och setters för att komma åt eller ändra datan.
Ett bra exempel är en Customer
-klass som definierar en bankkund:

index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
I exemplet ovan är inget fält direkt åtkomligt eller modifierbart utifrån. Istället används metoder som Deposit
och Withdraw
för att ändra värdet vid behov. På samma sätt används metoden getBalance
för att hämta saldot.
Nyckelordet public
bör generellt undvikas om det inte är nödvändigt.
Som påminnelse: om vi vill hålla ett fält otillgängligt utanför klassen men tillgängligt för ärvda klasser, kan vi använda åtkomstmodifieraren protected
.
1. Vilken roll spelar åtkomstmodifierare i inkapsling i C#?
2. Vilken av följande åtkomstspecifikationer bör användas minst för att bevara inkapsling?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 2.04
Inkapsling
Svep för att visa menyn
Inkapsling är i grunden en metod för dataorganisering. Det innebär att organisera data och metoder i form av klasser så att hela programmet i princip är uppbyggt kring klasser och att data och metoder är inkapslade inom dessa klasser. Denna inkapsling ger ett sätt att kontrollera åtkomst till ett objekts interna tillstånd, vilket främjar modularitet, underhållbarhet och säkerhet i ett mjukvarusystem.
Vid inkapsling används åtkomstmodifierare som public
, private
och protected
för att dölja de flesta fält och metoder i en klass och endast exponera de som behöver användas utifrån.
Eftersom det mesta av datan är direkt otillgänglig utanför klassen används getters och setters för att komma åt eller ändra datan.
Ett bra exempel är en Customer
-klass som definierar en bankkund:

index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
I exemplet ovan är inget fält direkt åtkomligt eller modifierbart utifrån. Istället används metoder som Deposit
och Withdraw
för att ändra värdet vid behov. På samma sätt används metoden getBalance
för att hämta saldot.
Nyckelordet public
bör generellt undvikas om det inte är nödvändigt.
Som påminnelse: om vi vill hålla ett fält otillgängligt utanför klassen men tillgängligt för ärvda klasser, kan vi använda åtkomstmodifieraren protected
.
1. Vilken roll spelar åtkomstmodifierare i inkapsling i C#?
2. Vilken av följande åtkomstspecifikationer bör användas minst för att bevara inkapsling?
Tack för dina kommentarer!