----- Original Message -----
From: "Remi Forax" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 09, 2002 6:52 PM
Subject: Re: Class static VS singleton
> Laurent For�t wrote:
> > ----- Original Message -----
> > From: "Nicolas Delsaux" <[EMAIL PROTECTED]>
> > To: "Laurent For�t" <[EMAIL PROTECTED]>
> > Sent: Monday, December 09, 2002 12:00 PM
> > Subject: Re: Class static VS singleton
> >
> >
> >>Le m�thodes statiques ne fournissent pas d'h�ritage. La cons�quence
> >
> > imm�diate est qu'il n'est pas possible de red�finir leur comportement,
ou
> > m�me de le sp�cialiser, dans le cas o� une impl�mentation plus
sp�cialis�e
> > (par exemple XML ou DB) peut �tre n�cessaire.
> >
> > Pas compl�tement il est possible d'�tendre ce genre de classe et on peut
> > red�finir leur comportement :
> >
> > public class ClassUsingStatic {
> > public static void staticMethod() {
> > System.out.println("In ClassUsingStatic.staticMethod()");
> > }
> > }
> > public class OtherClassUsingStatic extends ClassUsingStatic {
> > public static void staticMethod() {
> > System.out.println("In OtherClassUsingStatic.staticMethod()");
> > }
> > }
> >
> > Est possible. Par contre, il est vrai que l'on ne peut pas h�riter du
> > comportement de la classe m�re :
> >
> > public class ClassUsingStatic {
> > public static void staticMethod() {
> > System.out.println("In ClassUsingStatic.staticMethod()");
> > }
> > }
> > public class OtherClassUsingStatic extends ClassUsingStatic {
> > public static void staticMethod() {
> > super.staticMethod();
> > System.out.println("In OtherClassUsingStatic.staticMethod()");
> > }
> > }
> >
> > On a effectivement, une erreur de compilation :
> > OtherClassUsingStatic.java [4:1] non-static variable super cannot be
> > referenced from a static context
> > super.staticMethod();
> > ^
> > 1 error
>
> heu, pas bien compris le propos.
> On a le droit d'�crire :
>
> public class OtherClassUsingStatic extends ClassUsingStatic {
> public static void staticMethod() {
> ClassUsingStatic .staticMethod();
> System.out.println("In OtherClassUsingStatic.staticMethod()");
> }
> }
>
C'est exact, et �a a le r�sultat voulu !
Mais, il n'empeche pas que l'on a pas h�rit� du comportement de la classe
m�re.
> En fait, c'est sourtout le polymorphisme qui ne marche pas !!
Je vais y r�fl�chir avant de r�pondre ;) !
Apr�s quelques minutes, j'ai �crit le code suivant :
public static void main(String[] args) {
ClassUsingStatic myObj = new OtherClassUsingStatic();
myObj.staticMethod();
}
Et, quelle fut ma surprise de voir en effet, dans ma console le r�sultat
suivant :
In StaticClass.staticMethod()
et je n'avais pas de "In OtherClassUsingStatic.staticMethod()".
Il ne semble donc pas possible de faire du polymorphisme avec des m�thodes
statiques. Mais, je ne comprend pas pourquoi. Une explication ?
>
> Remi
>
Laurent.