Zugriffsmodifikatoren in C#: public, private, protected, internal — was ist der Unterschied und wann verwendet man was?
Hallo zusammen! Ich habe gerade angefangen, C# zu lernen und schreibe meine ersten Klassen. Ich bin über die Zugriffsmodifikatoren gestolpert. Ich verstehe zwar, dass `public` "für alle" bedeutet, `private` "nur innerhalb der Klasse" und `protected` "für Vererbende". Aber in der Praxis bin ich verwirrt.
Hier ist ein Beispiel. Ich habe eine Klasse `BankAccount`:
class BankAccount
{
public string AccountNumber { get; set; }
private decimal balance = 0;
protected decimal interestRate = 0.05m;
public void Deposit(decimal amount)
{
balance += amount;
}
}
Dann erstelle ich eine Klasse `SavingsAccount`, die von `BankAccount` erbt:
class SavingsAccount : BankAccount
{
public void ApplyInterest()
{
// Hier ist das Problem: Ich kann interestRate (protected) verwenden,
// aber nicht balance (private).
// Das ist verständlich. Aber was mache ich, wenn ich Zugriff auf balance
// nur für Vererbende gewähren möchte, aber nicht für alle anderen?
}
}