Datakurser
Aktuell vecka: 48

Tillbaka till toppen

C# Klasser static

Begreppet static - klassvariabler, klassmetoder

Det reserverade ordet static talar om att variabler och metoder är klassvariabler respektive klassmetoder. Vi känner igen det genom att vår main-metod är av typen static. Med det menas att de skapas en gång och tillhör själva klassen. Varje objekt som skapas av klassen kommer då åt denna gemensamma variabel respektive metod.
Dvs flera objekt från en klass kan ha en gemensam variabel. Vår main-metod, den finns där och tillhör klassen utan att vi måste skapa något objekt av klassen.
Vi ska nedan se på ett exempel med klassvariabel. (Se även sid 149 i boken.)

Klassen från lektionen "Klasser konstruktor" byggs ut på följande sätt:
• lägg till en klassvariabel (antal)
• lägg till en privat metod (antalElever( ))
• lägg till en publik metod (skrivUtNamnOchAntalElever( ))
• lägg till en publik klassmetod (skrivUtAntalElever( ))

Observera sedan hur man anropar de olika metoderna. Med instansnamnet för vanliga metoder men med klassnamnet för klassmetoder.
Uppräkningen av antal elever görs nedan på två olika sätt. Inget är bättre än det andra utan visar bara på möjliga lösningar.

class Elev
{
     //variabler (datamedlemmar)
     public string namn;
     public int points;
     //klassvariabel
     public static int antal;


     //metoder
     . . .
     . . .
     . . .
     private void antalElever( )
     {
          antal++;
     }
      public void skrivUtNamnOchAntalElever( )
     {
          Console.WriteLine("========================");
          Console.WriteLine(" Namn: "+namn);
          Console.WriteLine(" Antal elever: "+antal+" st");
          Console.WriteLine("========================");
     }

    //klassmetod
     public static void skrivUtAntalElever( )
     {
          Console.WriteLine("========================");
          Console.WriteLine(" Antal elever: "+antal+" st");
          Console.WriteLine("========================");
     }


     //konstruktorer
     public Elev ()
     {
          antal++;
          namn="ingen";
          points=0;
     }
     public Elev( string n)
     {
          antalElever( );
          namn=n;
          points=0;
     }
     public Elev( string n, int p )
     {
          antalElever( );
          namn=n;
          points=p;
     }
}

//¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
// HUVUDPROGRAMMET klassex4
class Program
{
      static void Main(string[] args)
      {
           //skapa objekten genom anrop till defaultkonstruktorn
           Elev e1 = new Elev();
           // skapa objekten genom anrop till konstruktorn med 1 argument
           Elev e2 = new Elev("Musse Pigg");
           e3.skriv_ut_data();
          . . .
          . . .
          . . .
           e2.skrivUtNamnOchAntalElever();
           Elev.skrivUtAntalElever();  

           Console.ReadLine();
      }
}

Källor