2013-04-09 2 views
2

Iam이 추상 클래스로 응용 프로그램을 작성 중입니다.Abstract 클래스로 생성자 오류가 발생했습니다.

내 추상 클래스 = Werknemer 서브 클래스 =의 Ober 및 콕 이제

내가 내 양식에

Kok a = new Kok();

"하는 생성자를 포함하지 않습니다이 줄을 추가 할 때 나는 오류가 발생했습니다 0 "

내가 잘못 했습니까?

내 추상 클래스 :

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(); 




} 

내 다른 서브 클래스 :

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"; 
    } 

다른 서브 클래스

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";    
    } 
+1

세 번째 코드 블록에서 6 개의 매개 변수가있는 'public Kok (String Naam, Adres Adres, double FTE, int WerknemersCode, DateTime DatumIndienst, string res)'생성자를 선언합니다. 그러나 당신은 0 개의 인자 ('new Kok()')로 그것을 호출합니다. – dtb

+0

기본 생성자가 정의되어 있지 않습니다. 그리고 무엇보다, 당신은 당신이 처음에 '콕'을 오버로드 한 매개 변수를 호출하지 않습니다. – Brian

답변

2

Kok 유형에는 매개 변수없는 생성자가 없으므로 인스턴스 생성시 예상되는 매개 변수를 전달하거나 매개 변수없는 생성자를 추가해야합니다.

7

당신은 매개 변수로 생성자를 정의 - 당신은 자동으로 '숨기기'기본 하나.

즉 명시 적으로 정의해야합니다.

그냥 추가

...

public Kok(){} 

당신도 잘해야합니다.

귀하의 기본 클래스는 '합리적인'매개 변수가 입력 일 것으로 예상하므로, 귀하의 현재 상황에 맞는 것이 무엇인지 알아야합니다. (@Mudu 개선)

+1

실제로, 기본 생성자는 OP 코드에서와 같이 합당한 기본값 대신 합당한 기본값으로'기본 생성자 *를 호출해야합니다.'public Kok() : base (...) {}' –

+0

물론 @Mudu - 이것은 빠른 포인터였습니다 - OP는 틈을 메울 필요가 있습니다. – NSGaga

관련 문제