6237 Programmering II (Csharp) Agenda/Classes inheritance
From Teknologisk videncenter
Arv (Inheritance)
Vi lavede i sidste eksempel klassen Person. På skolen mercantec kunne den godt dække både lærer og elever. Der er dog den tilføjelse at en elev er tilknyttet et hold, det er læreren ikke. Til gengæld får læreren løn.
Det kan vi gøre ved at specialisere klassen Person.
I UML ser det således ud.
I koden laver vi nerarvning ved at skrive Elev : Person hvilket betyder at elev arver alle attributter og metoder fra Person.
I konstruktøren tilføjer vi parametren hold, men sender navn og email videre til konstruktøren for Person (base).
class Elev : Person
{
private String hold;
public String Hold
{
get { return hold; }
set { hold = value; }
}
//Konstruktør
public Elev(String navn, String email, String hold)
: base(navn, email)
{
this.hold = hold;
}
}
På sammemåde laves klassen laerer
class Laerer : Person
{
private Double loen;
public Double Loen
{
get { return loen; }
set { loen = value; }
}
//Konstruktør
public Laerer(String navn, String email, Double loen)
: base(navn, email)
{
this.loen = loen;
}
}
Derefter kan vi oprette både en laerer og en elev, og på begge kan vi kalde metoden SigHej da de arver fra Person, men det er kun eleven der har et hold og kun lærer der får løn.
static void Main(string[] args)
{
Laerer l1 = new Laerer("Tommy", "tommys@mail.dk", 25000);
l1.SigHej("Lars");
System.Console.WriteLine(l1.Loen);
Elev e1 = new Elev("Jens", "jens@mail.dk", "Hold1");
e1.SigHej("Lars");
System.Console.WriteLine(e1.Hold);
}