Toon posts:

[C#] Overerven en constructor met > 1 parameters

Pagina: 1
Acties:
  • 220 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb 2 classes, namelijk File en Directory. Directory erft over van File en heeft een paar extra attributen/functies.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class File {

  public File(Verbinding Verb) {
    objVerbinding = Verb;
  }

  ...
}

public class Directory : File {

  public Directory(Verbinding Verb) {
    objVerbinding = Verb;
  }

}


Als ik het zo uitprogrammeer dan krijg ik de error: No overload for method 'File' takes '0' arguments

Als ik de constructor van Directory weglaat krijg ik dezelfde foutmelding. Nu kan ik wel een constructor met 0 parameters maken voor File, maar dat is niet netjes.

In Java moet het met super(Verbinding Verb), maar dat vindt C# niet leuk. Weet iemand toevallig hoe het wel moet? Alvast bedankt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Roep je ergens een constructor aan zonder argumenten ofzo?

Waar krijg je die fout precies, want zo is het toch wat giswerk hoor.

super bestaat niet in C#; als je iets wilt oproepen van de parent class, moet je het base keyword gebruiken.

https://fgheysels.github.io/


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
C# is geïnspireerd door C++. Normaal zou je bij een normale aanroep van een superklasse base gebruiken, echter bij een constructor gebruik je de C++ initialisator manier
http://www.csharphelp.com/archives/archive65.html

*eerste hit bij google met C# en super als keywords ;) *

Verwijderd

Topicstarter
Nee, ik roep zelf geen constructor aan zonder argumenten, maar blijkbaar wil C# een constructor zonder argumenten wanneer er van de class overge-erft wordt.

Ik ga ff op zoek naar het base-keyword...

Verwijderd

Topicstarter
code:
1
public Directory(Verbinding Verb) : base(Verb) { }


Dit was doing the trick. Tnx!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 09 June 2003 @ 13:17:
Nee, ik roep zelf geen constructor aan zonder argumenten, maar blijkbaar wil C# een constructor zonder argumenten wanneer er van de class overge-erft wordt.

Ik ga ff op zoek naar het base-keyword...
Dat zal C# (en C++/Java - de rest van de OO talen waarsch ook - ) impliciet zelf doen als jij dat niet expliciet doet. Een subklasse moet namelijk de superclass in zich ook kunnen initialiseren, zodat deze de juiste state bevat :)

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 09 juni 2003 @ 13:17:
Nee, ik roep zelf geen constructor aan zonder argumenten, maar blijkbaar wil C# een constructor zonder argumenten wanneer er van de class overge-erft wordt.
Nee juist niet. De error zegt dat, omdat er geen : base(arguments), en er dus impliciet : base() achter geplakt wordt, er geen File() constructor bestaat, wat ook zo is. C# doet impliciete base class initialisatie dmv het impliciet aanroepen van base class constructors. Als er geen base class constructor is opgegeven, zal C# de : base() constructor aanroep kiezen, net zoals C# automatisch een lege constructor toevoegt wanneer je geen constructor opneemt in je class

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1