Difference between revisions of "6237 Programmering II (Csharp) Agenda/Classes inheritance"
From Teknologisk videncenter
(→Arv (Inheritance)) |
m (added Category:Csharp using HotCat) |
||
(One intermediate revision by one other user not shown) | |||
Line 65: | Line 65: | ||
</source> | </source> | ||
[[Category:6237 Programmering II]] | [[Category:6237 Programmering II]] | ||
+ | [[Category:Csharp]] |
Latest revision as of 12:29, 18 February 2016
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);
}