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