abstracte klasse fout

Status
Niet open voor verdere reacties.

rambomambo

Gebruiker
Lid geworden
9 dec 2012
Berichten
163
mijn programma werkte maar heb een klasse veranderd naar een abstracte klasse en nu krijg ik in mijn mainwindow
dat de code klasse = new klasse(); niet meer geldig is hoe is dit op te lossen want heb wel degelijk een abstracte klasse nodig

Error 1 Cannot create an instance of the abstract class or interface 'BelAlex.Telefoon' C:\Users\Alexander\Desktop\H2_Overerving_OPGAVE\H2.Oef2.EnergieVerbruik\BelAlex\MainWindow.xaml.cs 29 27 BelAlex


alvast bedankt
 
Met abstracte klasses kun je geen instances meer maken, dus ClassName myClass = new ClassName werkt dan niet meer. In plaats daarvan kan je direct je members benaderen door gewoon de naam van de class te typen.

Een voorbeeld van een bestaande abstracte klasse is de Console class. Die kun je ook direct aanroepen zonder eerst een instance te moeten maken van de Console class.
 
Wat je beschrijft is een static class.

Abstract class is een 'parent class' zoals elk windows form als basis Form heeft. Dus moet je een class maken die 'inherit' van de abstract class.


Code:
public abstract class PersonBase
{
    public string Name { get; set; }
}

public class Customer : PersonBase
{

}

public class Employee : PersonBase
{
    
}

PersonBase person1 = new Customer();
PersonBase person2 = new Employee();
 
ja en hoe kan ik dan bevoorbeeld een methode bv de methode public string bellen()
uit een abstructed klasse in mijn mainwindow gebruiken ?
 
Je kunt in je abstract class methods maken (deze kunnen ook abstract zijn) en deze gewoon op een instance aanroepen. Maar je zult 'child' classes moeten maken als je abstract wilt gebruiken als instance.



Code:
public abstract class PersonBase
{
	public string Name { get; set; }

	public void Call()
	{
		MessageBox.Show("calling " + Name);
	}
}

public class Customer : PersonBase
{
}
public class Employee : PersonBase
{
}


//in je .cs codebehind class van je window
public void Call()
{
	PersonBase person1 = new Customer();
	person1.Name = "Person 1";

	PersonBase person2 = new Employee();
	person2.Name = "Person 2";

	person1.Call();
	person2.Call();
}
 
Oeps ja, een static class is dat inderdaad. Ik moet LearnVisualStudio.Net nog maar eens raadplegen. xD Maar wat is dan precies een abstract class?
 
Je kunt een abstract class gebruiken bijvoorbeeld als je verschillende classes hebt die ongeveer hetzelfde zijn en/of dezelfde functionaliteit hebben. Je kun bepaalde methods in de abstract class implementeren zodat alle classes die deze als base hebben ervan gebruik kunnen maken. Eventueel met een aangepaste implementatie (door methods te overriden).

Je kun ook in de abstract class methods abstract implementeren zodat elke class die inherit van de base class deze moet implementeren.


Ik gebruik het bijvoorbeeld bij ViewModels. Elk viewmodel stuurt een of meerdere windows aan en hebben altijd een zelfde basis zoals een window title, bepaalde events etc.

Met een base class hoef ik niet voor 10 view models dezelfde code steeds te schrijven of indien nodig, aan te passen. Aanpassingen doe je dan in de abstract class en werkt het voor alle andere viewmodels.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan