Modificadores de acesso em C#: public, private, protected, internal — qual a diferença e quando usar cada um?
Olá a todos! Acabei de começar a estudar C# e estou escrevendo minhas primeiras classes. Tropecei nos modificadores de acesso. Até entendo que `public` é "para todos", `private` é "apenas dentro da classe", e `protected` é "para herdeiros". Mas na prática fico confuso.
Aqui está um exemplo. Tenho uma classe `BankAccount`:
class BankAccount
{
public string AccountNumber { get; set; }
private decimal balance = 0;
protected decimal interestRate = 0.05m;
public void Deposit(decimal amount)
{
balance += amount;
}
}
Depois crio uma classe `SavingsAccount` que herda de `BankAccount`:
class SavingsAccount : BankAccount
{
public void ApplyInterest()
{
// Aqui está o problema: posso usar interestRate (protected),
// mas não posso usar balance (private).
// Isso é compreensível. Mas o que fazer se quiser dar acesso a balance
// apenas para herdeiros, mas não para todos os outros?