Iam working on a application with a abstract class.
My abstract class = Werknemer The subclasses = Ober and Kok
Now i got a error when i add this line in my form
Kok a = new Kok();
"does not contain a constructor that takes 0"
Do i something wrong?
My abstract class:
abstract class Werknemer
{
public string Naam { get; private set; }
public double FTE { get; private set; }
public int WerknemersCode { get; private set; }
public DateTime DatumIndienst { get; private set; }
public string WerktBijRestaurant { get; private set; }
public decimal FooiUitkering { get; private set; }
public Werknemer(string Naam, Adres Adres, double FTE, int WerknemersCode, DateTime DatumIndienst, string Res)
{
this.Naam = Naam;
this.FTE = FTE;
this.WerknemersCode = WerknemersCode;
this.DatumIndienst = DatumIndienst;
this.WerktBijRestaurant = Res;
}
public String AlsString()
{
return Naam;
}
public abstract String MaakSchoon();
}
MY other subclasses :
class Ober : Werknemer
{
public bool AllRounder { get; private set; }
public bool Bediening { get; private set; }
public decimal Fooi { get; private set; }
public Ober(string Naam, Adres Adres, double FTE, int WerknemersCode, DateTime DatumIndienst, string res): base(Naam, Adres, FTE, WerknemersCode, DatumIndienst, res)
{
// this.AllRounder = AllRounder;
// this.Bediening = Bediening;
// this.FooienPot = FooienPot;
}
public String ToString()
{
return null;
}
public override String MaakSchoon()
{
return "Ober";
}
Other subclass
class Kok : Werknemer
{
public bool Leadkok { get; private set; }
public string Specialiteit { get; private set; }
public Kok(string Naam, Adres Adres, double FTE, int WerknemersCode, DateTime DatumIndienst, string res) : base (
Naam, Adres, FTE, WerknemersCode, DatumIndienst, res)
{
// this.Leadkok = Leadkok;
// this.Specialiteit = Specialiteit;
}
public String ToString()
{
return null;
}
public override String MaakSchoon()
{
return "kok";
}
When you define a constructor with parameters - you automatically 'hide' the default one.
i.e. you need to explicitly define it.
Just add...
public Kok(){}
and you should be fine.
Your base class expects some 'sensible' parameters as input - so you need to see what that is for your case at hand. (as improved by @Mudu)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With