Modificadores de acceso en C#: public, private, protected, internal — cuál es la diferencia y cuándo usar cada uno
¡Hola a todos! Acabo de empezar a aprender C# y estoy escribiendo mis primeras clases. Me he topado con los modificadores de acceso. Parece que entiendo que `public` es "para todos", `private` es "solo dentro de la clase", y `protected` es "para los herederos". Pero en la práctica me confundo.
Aquí hay un ejemplo. Tengo una clase `BankAccount`:
class BankAccount
{
public string AccountNumber { get; set; }
private decimal balance = 0;
protected decimal interestRate = 0.05m;
public void Deposit(decimal amount)
{
balance += amount;
}
}
Luego creo una clase `SavingsAccount` que hereda de `BankAccount`:
class SavingsAccount : BankAccount
{
public void ApplyInterest()
{
// Aquí está el problema: puedo usar interestRate (protected),
// pero no puedo usar balance (private).
// Esto es comprensible. Pero ¿qué hago si quiero dar acceso a balance
// solo a los herederos, pero no a todos los demás?
}
}