In dit hoofdstuk leer je een aantal kleine zaken die geen volledig hoofdstuk verdienen, maar toch best even besproken worden.
Je hebt al gezien hoe je een bij de declaratie van een class een base class kan kiezen. Als je dat niet doet bestaat er eigenlijk ook een base class. Elk object zonder base class heet de class Object als basis. De Object class heeft al verschillende functies, zoals:
public virtual bool Equals (object obj);
public virtual string ToString ();
Wanneer je aan een class een functie wil toevoegen, dan mag die functie nog niet bestaan.
Elke class die je maakt is afgeleid van een andere class: Object
. Deze class heeft onder meer de functie ToString()
. Daardoor kan je
elke class die je maakt rechtstreeks gebruiken met Console.WriteLine()
. Het resultaat van Console.WriteLine()
is de naam van de class. Bijvoorbeeld zo:
class BankAccount {
public string Name { get; set; }
public int Balance { get; set; }
}
var account = new BankAccount();
Console.WriteLine("Dit is een " + account);
Het resultaat van Console.WriteLine is in dit geval:
Dit is een BankAccount.
Je kan die functie ook overschrijven. Je zegt dan aan de compiler “Wanneer iemand om de functie ToString()
vraagt, gebruik dan deze versie in plaats van de standaard versie”. Je doet dat door de functie te voorzien van het keyword override
. De functienaam, argumenten en resultaat moeten wel gelijk zijn aan de oorspronkelijke functie. Maar de compiler helpt je daarbij. Wanneer je override typt in een class, dan zal de compiler je de functies tonen die je kan overschrijven. Je selecteert dan de functie die je wil overschrijven.
In het voorbeeld hieronder maken we een override
voor de functie ToString()
zodat niet de naam van de class gegeven wordt, maar de properties getoond worden.
class BankAccount {
public string Name { get; set; }
public int Balance { get; set; }
// Override voor de ToSTring() functie
public override string ToString() {
return "Account " + Name + " has a balance of " + Balance + "Euro";
}
}
var account = new BankAccount();
account.Name = "one";
account.Balance = 1000;
Console.WriteLine(account);
Het resultaat is nu:
Account one has a balance of 1000 Euro