Accueil de l'archive Service proposé par Hervé AGNOUX

TOUT -|- TOUT sur le visuel -|- TOUT sur la logistique

Date sent:      	Fri, 01 Dec 2000 08:39:30 +0100
From:           	julien piaser <jpiaser@lxsolutions.com>
Organization:   	lxsolutions
To:             	java@u-strasbg.fr
Subject:        	problème d'héritage
Send reply to:  	java@u-strasbg.fr

Petite question de base:

j'ai une classe B qui hérite de A. Le compilateur refuse de compiler B en
disant qu'il est nécessaire qu'un constructeur sans paramètre soit défini
dans A. Est-ce une des bases du langage que je n'ai pas aquise ou est-ce
un cas particulier?

merci d'avance

Julien

     

From:           	"Nicolas Delsaux" <nicolas.delsaux@free.fr>
To:             	<java@u-strasbg.fr>
Subject:        	Re: problème d'héritage
Date sent:      	Fri, 1 Dec 2000 09:36:54 +0100
Organization:   	Miriad Technologies
Send reply to:  	java@u-strasbg.fr

Ton exemple n'est pas très clair, mais le cas le plus simple est celui où
ta classe B contient des constructeurs qui appellent super(). Si c'est le
cas, il vaut mieux effectivement définir un constructeur par défaut (ce
qui peut sembler de toute manière une bonne politique, puisque ce
constructeur automatise toutes les initialisations).

 Nicolas Delsaux

----- Original Message -----
From: julien piaser <jpiaser@lxsolutions.com>
To: <java@u-strasbg.fr>
Sent: Friday, December 01, 2000 8:39 AM
Subject: problème d'héritage


> Petite question de base:
>
> j'ai une classe B qui hérite de A. Le compilateur refuse de compiler B
> en disant qu'il est nécessaire qu'un constructeur sans paramètre soit
> défini dans A. Est-ce une des bases du langage que je n'ai pas aquise ou
> est-ce un cas particulier?
>
> merci d'avance
>
> Julien
>

     

Date sent:      	Fri, 01 Dec 2000 09:41:19 +0100
From:           	julien piaser <jpiaser@lxsolutions.com>
Organization:   	lxsolutions
To:             	java@u-strasbg.fr
Subject:        	Re: problème d'héritage
Send reply to:  	java@u-strasbg.fr

Nicolas Delsaux a écrit :

> Ton exemple n'est pas très clair, mais le cas le plus simple est celui
> où ta classe B contient des constructeurs qui appellent super(). Si
> c'est le cas, il vaut mieux effectivement définir un constructeur par
> défaut (ce qui peut sembler de toute manière une bonne politique,
> puisque ce constructeur automatise toutes les initialisations).

voici mon exemple:

public class A{

    public A(String myParam){
        //corps
    }
}

public class B extends A{} // sans corps...

ce cas ne marche pas... pourquoi et comment y remédier? (à part mettre un
constructeur de type A() dans A)

>
>
>  Nicolas Delsaux
>
> ----- Original Message -----
> From: julien piaser <jpiaser@lxsolutions.com>
> To: <java@u-strasbg.fr>
> Sent: Friday, December 01, 2000 8:39 AM
> Subject: problème d'héritage
>
> > Petite question de base:
> >
> > j'ai une classe B qui hérite de A. Le compilateur refuse de compiler B
> > en disant qu'il est nécessaire qu'un constructeur sans paramètre soit
> > défini dans A. Est-ce une des bases du langage que je n'ai pas aquise
> > ou est-ce un cas particulier?
> >
> > merci d'avance
> >
> > Julien
> >

--
LXSolutions SA
40,rue Marc Seguin BP2118 F-68060 Mulhouse Cedex
Tél.: +33 (0)3.89.32.72.92 Fax: +33 (0)3.89.32.72.93
mailto:jpiaser@lxsolutions.com
http://www.lxsolutions.com



     

From:           	Serge Loubet <sl@c-c.ch>
To:             	java@u-strasbg.fr
Subject:        	RE: problème d'héritage
Date sent:      	Fri, 1 Dec 2000 09:49:01 +0100
Send reply to:  	java@u-strasbg.fr

public class B extends A{
    public B(){
        super("");
    }
}

ou 
public class A{ 


    public A(String myParam){ 
        //corps 
    }

    public A(){ 
        //corps 
    } 
}  

Serge Loubet (sl@c-c.ch)
Plein de conneries sur http://conneries.forez.com
<http://conneries.forez.com/> 
Bookmark en ligne sur http://bookmark.forez.com
<http://bookmark.forez.com/>



-----Original Message-----
From: julien piaser [mailto:jpiaser@lxsolutions.com]
Sent: Friday, December 01, 2000 9:41 AM
To: java@u-strasbg.fr
Subject: Re: problème d'héritage


Nicolas Delsaux a écrit : 

Ton exemple n'est pas très clair, mais le cas le plus simple est celui où
ta

classe B contient des constructeurs qui appellent super(). Si c'est le
cas, il vaut mieux effectivement définir un constructeur par défaut (ce
qui peut sembler de toute manière une bonne politique, puisque ce
constructeur automatise toutes les initialisations).

voici mon exemple: 

public class A{ 


    public A(String myParam){ 
        //corps 
    } 
} 


public class B extends A{} // sans corps... 


ce cas ne marche pas... pourquoi et comment y remédier? (à part mettre un
constructeur de type A() dans A) 




 Nicolas Delsaux 


----- Original Message ----- 
From: julien piaser <jpiaser@lxsolutions.com> 
To: <java@u-strasbg.fr> 
Sent: Friday, December 01, 2000 8:39 AM 
Subject: problème d'héritage 


> Petite question de base: 
> 
> j'ai une classe B qui hérite de A. Le compilateur refuse de compiler B
> en disant qu'il est nécessaire qu'un constructeur sans paramètre soit
> défini dans A. Est-ce une des bases du langage que je n'ai pas aquise ou
> est-ce un cas particulier? 
> 
> merci d'avance 
> 
> Julien 
>

-- 

LXSolutions SA 

40,rue Marc Seguin BP2118 F-68060 Mulhouse Cedex

Tél.: +33 (0)3.89.32.72.92 Fax: +33 (0)3.89.32.72.93

mailto:jpiaser@lxsolutions.com <mailto:jpiaser@lxsolutions.com>  

http://www.lxsolutions.com <http://www.lxsolutions.com> 

     

From:           	"Cedric Beust" <cedric@beust.com>
To:             	<java@u-strasbg.fr>
Subject:        	RE: problème d'héritage
Date sent:      	Fri, 1 Dec 2000 01:18:05 -0800
Send reply to:  	java@u-strasbg.fr

  From: jpiaser@zeus.lxsolutions.com
  [mailto:jpiaser@zeus.lxsolutions.com]On
Behalf voici mon exemple:
  public class


      public A(String
aram){ 
          //corps 
      } 
  } 

  public class B extends A{} // sans corps... 

  ce cas ne marche pas... pourquoi et comment y remédier? (à part mettre
  un constructeur de type A() dans A)  



Mets-toi a la place du compilateur...

Pour construire un objet B, tu dois d'abord construire un objet A.  Quand
le constructeur B() est appele, il ne peut pas etre execute avant que
l'objet A soit construit. Et c'est a ce niveau que ca coince : le
compilateur essaie d'appeler A() mais ce constructeur n'existe pas.

Le remede est donc exactement celui que tu soupconnes : ajoute un
constructeur vide et sans parametre dans A.

Pour plus de details, voir la section sur les initialisations d'objets
dans la JLS.

-- 
Cedric

     

From:           	"Franck DAGRON" <fdagron@club-internet.fr>
To:             	<java@u-strasbg.fr>
Subject:        	Re: problème d'héritage
Date sent:      	Fri, 1 Dec 2000 10:30:51 +0100
Send reply to:  	java@u-strasbg.fr

Bonjour à tous, je suis nouveau sur la liste (depuis hier).
J'ai donc commencé à voir passé les divers sujets et je me demande ce que
c'est que  la JLS dont il est question ?

Autre question, le niveau des personnes sur la liste est plutôt débutant,
moyen, expérimenté ? ou tout à la fois. personnellement je suis débutant
et je pense que je ne tarderai pas à demander de l'aide ;-)
  ----- Original Message ----- 
  From: Cedric Beust 
  To: java@u-strasbg.fr 
  Sent: Friday, December 01, 2000 10:18 AM
  Subject: RE: problème d'héritage

  // corps du message

  Pour plus de details, voir la section sur les initialisations d'objets
  dans la JLS. -- Cedric


     

From:           	"Cedric Beust" <cedric@beust.com>
To:             	<java@u-strasbg.fr>
Subject:        	RE: problème d'héritage
Date sent:      	Fri, 1 Dec 2000 01:38:44 -0800
Send reply to:  	java@u-strasbg.fr

  From: Franck DAGRON [mailto:fdagron@club-internet.fr]


  J'ai donc commencé à voir passé les divers sujets et je me demande ce
  que
c'est que la JLS dont il est question ?

Java Language Specification. La definition du langage. Probablement pas le
genre de livre destine aux debutants (ni meme aux programmeurs en fait,
sauf aux coupeurs de cheveux en quatre comme moi).
  Autre question, le niveau des personnes sur la liste est plutôt
  débutant,
moyen, expérimenté ? ou tout à la fois.

<thierry_lhermitte>
Ca depend des personnes, ca.
</thierry_lhermitte>

Serieusement, contrairement a advanced-java, la liste Java francaise ne
met pas de conditions sur le niveau des questions qui y sont posees, donc
n'hesite pas. Au pire, ta question ne recevra aucune reponse (ce qui
signifie qu'elle est ou bien trop simple, ou trop compliquee).

--
Cedric


     

From:           	jean-philippe.bret@certia.cnafmail.fr
Subject:        	[JAVA] RE:  problème d'héritage
To:             	java@u-strasbg.fr
Date sent:      	Fri, 1 Dec 2000 11:10:18 +0100
Send reply to:  	java@u-strasbg.fr



si on ne definit aucun constructeur pour une classe, un
constructeur par défaut est "mis à disposition" sans
implementation necessaire. Ce constructeur, c'est
<nom_classe>(<aucun_argument>)
{
<corps_vide>
}

avec une classe public class C{}
on peut invoquer le constructeur new C();

si on definit au moins un constructeur, le constructeur
par defaut n'est plus mis à disposition.

public class C{
public C(String s){...}
}

on ne peut plus ecrire new C();

Or comme l'a si bien expliqué un de nos camarades, si on
herite d'une classe, tout constructeur de la classe fille
invoque *implicitement* son super constructeur.

public class Cfille extends C{}
on ne peut pas ecrire "new CFille();"
à moins de...

1. de redefinir le constructeur par defaut CFille() en
lui indiquant *explicitement* que le super constructeur
à utiliser est super(String s)

2. de definir *explicitement* le super constructeur par
defaut car celui ci n'est plus "visible".



J_P_B_G

*******************************************************
ATTENTION : Pour vous desinscrire, envoyez un message a
sympa@u-strasbg.fr sans subject, avec la ligne suivante
dans le corps du message:     unsub java
Cette  desinscription  manuelle  ne  marche que si vous
l'envoyez depuis la MEME adresse electronique que celle
qui a servi pour vous inscrire.
En cas de probleme, contactez pecheux@erm1.u-strasbg.fr
*******************************************************

Bandeau pour obtenir un header [JAVA] et l'inscription
automatique des regles de desabonnement.


C'est fini ! Retour à l'accueil de la pseudo-archive