Public, private och protected

Public

Variabler och metoder som är publika kan läsas av och ändras på utifrån.

Fighter.cs
class Fighter
{
  public string Name = "";
}
Program.cs
Fighter hero = new Fighter();
hero.Name = "Laban";

Private

Variabler och metoder som inte är publika kan inte nås utifrån – men däremot kan de fortfarande nås inifrån metoder som ingår i samma klass. Privata variabler och metoder kan bara nås från metoder i exakt samma klass – så inte i någon subklass som ärver från den.

Om det inte står något framför en klassvariabel eller klassmetod är den automatiskt private.

För att man ska kunna få ut värdet hos en privat variabel behöver man gå via en publik metod som returnerar dess värde. Metoden tillhör ju klassen, så den får komma åt den privata variabeln. Detta är en form av inkapsling.

Fighter.cs
class Fighter
{
  private string _name = "";
  
  public string GetName()
  {
    return _name;
  }
}

Protected

Fungerar som private, men metoden/variabeln kan kommas åt i klasser som ärver från klassen där de deklareras.

Fighter.cs
class Fighter
{
  protected string _name = "";
  
  public string GetName()
  {
    return _name;
  }
}
StrongFighter.cs
class StrongFighter : Fighter
{
  public string GetName()
  {
    // kan använda name trots att variabeln tillhör basklassen
    return $"{_name} The Strong";
  }
}

Last updated