Ibland kan det hända att man behöver klasser som bara jobbar åt en annan klass, subklasser kan man kanske kalla dem. Det kan man göra genom att implementera en klass i en annan klass, man säger att man nästlar klasserna (nested classes).
Det första vi ska göra nu är att skapa den "yttre" klassen som sedan ska använda sig av subklasser, vi kallar den klassen för ForstaKlass (Första klassen).
public class ForstaKlass
{
private int A;
public ForstaKlass(int a)
{
A = a;
}
}
Det enda vi har gjort är att vi skapat en variabel A av typen int i klassen som vi sedan ska använda oss av. Vi har även skapat metoden ForstaKlass som helt enkelt ska ge A värdet som skickas in i metoden. Alltså, om vi skickar in värdet 3 i metoden ForstaKlass så kommer A att få det värdet.
Det vi ska göra nu är att vi ska skapa den innre klassen/nästlande klassen. Den ska också ligga i ForstaKlass. Se koden nedan:
public class NastladKlass
{
public void VisaA(ForstaKlass g)
{
System.Console.WriteLine(g.A);
}
}
Vad hände nu? Lugn, jag ska förklara.
Det vi gjorde är att vi skapade en klass inuti en klass, alltså NastladKlass klassen är skapad i ForstaKlass klassen. I NastladKlass har vi även skapat en metod som ska skriva ut värdet i variabeln A, klassen försöker alltså nå den uttre klassen och hämta värdet på A för att skriva ut det. Det är det som är så grymt med nästlade klasser, de har möjlighet att nå allt som tillhör den yttre klassen.
Att initiera en nästlad klass är enkelt, du behöver bara göra så här:
ForstaKlass.NastladKlass variabel = ForstaKlass.NastladKlass();
Inte så svårt va? =)
Nu vill vi ju se ifall detta fungerar, eller hur? Vi skapar en till klass (utanför ForstaKlass) som ska helt enkelt ge värde till A och sedan anropa den nästlade klassen för att skriva ut värdet på A.
public class TestKlass
{
static void Main()
{
ForstaKlass forsta = new ForstaKlass(3);
ForstaKlass.NastladKlass nastlad = ForstaKlass.NastladKlass();
nastlad.VisaA(forsta);
}
}
Svårare än så är det inte :)
För att inte skapa någon förvirring så har jag bifogad hela skriptet ovan i koden nedan. Jag hoppas att detta hjälper er. Lycka till!
public class ForstaKlass
{
private int A;
public ForstaKlass(int a)
{
A = a;
}
public class NastladKlass
{
public void VisaA(ForstaKlass g)
{
System.Console.WriteLine(g.A);
}
}
}
public class TestKlass
{
static void Main()
{
ForstaKlass forsta = new ForstaKlass(3);
ForstaKlass.NastladKlass nastlad = ForstaKlass.NastladKlass();
nastlad.VisaA(forsta);
}
}
Skapades: 2007-09-28 13:06:05
Skribent: Shadi
Lästs 897 gånger
Betyg: 0 (artikeln har endast 1 röster, det krävs minst 5 för ett betyg)