/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Inheritance
Fra : Gunner Carstens


Dato : 09-08-01 09:18

Hvorfor kan man godt sige:
class Bankkonto{}
class Checkkonto extends Bankkonto{}

men ikke :

class Bankkonto{
   public Bankkonto()//med constructor
   ...
   }
class Checkkonto extends Bankkonto{}
mvh Gunner

 
 
Peter H. (09-08-2001)
Kommentar
Fra : Peter H.


Dato : 09-08-01 10:46

In article <3B724735.76496325@plakaten.com>, "Gunner Carstens"
<gunner@plakaten.com> wrote:

> Hvorfor kan man godt sige:
> class Bankkonto{}
> class Checkkonto extends Bankkonto{}
>
> men ikke :
>
> class Bankkonto{
>    public Bankkonto()//med constructor
>    ...
>    }
> class Checkkonto extends Bankkonto{}
> mvh Gunner

Hej,

Sådan som du viser det her, så virker det også.

Men hvis jeg skal gætte på hvad der går galt, så er det at du har skrevet
en constructor i Bankkonto klassen som tager parametre (og ikke nogen der
IKKE tager parametre). Samtidig har du i Checkkonto klassen enten ikke
skrevet nogen constructor, eller skrevet en der ikke kalder nogen super
klasse constructor.

Det er sådan at hvis man skriver en sub klasse, så skal der være et kald
en super klasse constructor. Hvis der ikke bliver lavet noget kald til en
super klasse constructor i en sub klasse constructor, så skriver compileren
selv et kald ind (super();) på første linie en constructoren. Det betyder
at den skal kalde "standard constructoren" (altså den uden parametre).

Standard constructoren er kun til stede på super klassen, hvis den
explicit er skrevet, eller hvis der slet ikke er nogen constructor.

Du vil altså skulle lave noget der ser sådan her ud:

class Bankkonto {
   Bankkonto( int kontonummer ) {
   .
   .
   .
   }
}

class Checkkonto extends Bankkonto {
   Checkkonto( int kontonummer ) {
      super( kontonummer );         //super skal *altid* kaldes som det første
   }
}

Jeg håber du har fået noget ud af denne smørre. ;)


--
Peter H.

"I can't decide whether to commit suicide or go bowling."

Gunner Carstens (09-08-2001)
Kommentar
Fra : Gunner Carstens


Dato : 09-08-01 18:09


> Du vil altså skulle lave noget der ser sådan her ud:
>
> class Bankkonto {
> Bankkonto( int kontonummer ) {
> .
> .
> .
> }
> }
>
> class Checkkonto extends Bankkonto {
> Checkkonto( int kontonummer ) {
> super( kontonummer ); //super skal *altid* kaldes som det første
> }
> }
>
> Jeg håber du har fået noget ud af denne smørre. ;)

Du gættede rigtigt! Jeg havde netop lavet den fejl du beskriver.
Nu virker det
Tak for det
/gunner

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste