Cakeman
Legacy Member
Ik heb me deze week een boek over C# gekocht. Aangezien ik al wat programmeerervaring heb (VB 6.0 en Java) heb ik tot nu toe nog niet echt veel problemen gehad.
Ik zit nu aan een hoofdstuk over inheritance en polymorphism.
Daar wordt (eerder vaag) het verschil tussen een 'new method' en een 'override method' uitgelegd, maar ik snap het nog niet echt goed.
Voorbeeld uit het boek over 'new':
Analoog voorbeeld, maar dan over 'override':
Het enige verschil dat ik zie, is dat bij overriden, de base method het keyword 'virtual' krijgt.
Wanneer gebruik je 'new' en wanneer gebruik je 'override'? Wat is het grote verschil?
Ik zit nu aan een hoofdstuk over inheritance en polymorphism.
Daar wordt (eerder vaag) het verschil tussen een 'new method' en een 'override method' uitgelegd, maar ik snap het nog niet echt goed.
Voorbeeld uit het boek over 'new':
Code:
public class Window
{
private int top;
private int left;
public Window(int top, int left)
{
this.top = top;
this.left = left;
}
[b]public void DrawWindow()[/b]
{
Console.WriteLine("Drawing window at {0}, {1}", top, left);
}
}
public class ListBox : Window
{
private string lbContents;
public ListBox(int top, int left, string contents) : base(top, left)
{
lbContents = contents;
}
// a new version (note keyword) because in the
// derived method we change the behaviour
[b]public new void DrawWindow()[/b]
{
base.DrawWindow(); // invoke the base method
Console.WriteLine("Writing string to the listbox: {0}", lbContents);
}
}
Analoog voorbeeld, maar dan over 'override':
Code:
public class Window
{
private int top;
private int left;
public Window(int top, int left)
{
this.top = top;
this.left = left;
}
[b]public virtual void DrawWindow()[/b]
{
Console.WriteLine("Drawing window at {0}, {1}", top, left);
}
}
public class ListBox : Window
{
private string lbContents;
public ListBox(int top, int left, string contents) : base(top, left)
{
lbContents = contents;
}
// an overriden version (note keyword) because in the
// derived method we change the behaviour
[b]public override void DrawWindow()[/b]
{
base.DrawWindow(); // invoke the base method
Console.WriteLine("Writing string to the listbox: {0}", lbContents);
}
}
Het enige verschil dat ik zie, is dat bij overriden, de base method het keyword 'virtual' krijgt.
Wanneer gebruik je 'new' en wanneer gebruik je 'override'? Wat is het grote verschil?
