/ 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
at kalde ikke statiske funktioner fra stat~
Fra : Martin Schultz


Dato : 24-07-02 17:40

Hvis jeg har en funktion der fx. hedder public void etEllerAndet kan
jeg ikke kalde den fra fx public static void main med fx.
etEllerAndet();

Den klager over at jeg forsøger at kalde en ikke statisk funktion fra
en statisk. Er der ikke en måde man kan gøre det på?

 
 
Martin Møller Bæk (24-07-2002)
Kommentar
Fra : Martin Møller Bæk


Dato : 24-07-02 18:58



Martin Schultz wrote:

> Hvis jeg har en funktion der fx. hedder public void etEllerAndet kan
> jeg ikke kalde den fra fx public static void main med fx.
> etEllerAndet();
>
> Den klager over at jeg forsøger at kalde en ikke statisk funktion fra
> en statisk. Er der ikke en måde man kan gøre det på?


Det skyldes formentligt, at du ikke kalder den
på et object (A), men blot kalder den direkte (B).


Mvh.
Martin MB

ex. A - rigtig måde
class X
{
public static void main(..)
{
X t = new X();
t.foo();
}

public void foo()
{
...
}
}

B - forkert måde
class X
{
public static void main(..)
{
foo();
}

public void foo()
{
...
}
}


Martin Schultz (24-07-2002)
Kommentar
Fra : Martin Schultz


Dato : 24-07-02 19:28

On Wed, 24 Jul 2002 19:58:24 +0200, Martin
=?ISO-8859-1?Q?M=F8ller=20B=E6k?= <martin@nospam.aflame.dk> wrote:

>
>
>Martin Schultz wrote:
>
>> Hvis jeg har en funktion der fx. hedder public void etEllerAndet kan
>> jeg ikke kalde den fra fx public static void main med fx.
>> etEllerAndet();
>>
>> Den klager over at jeg forsøger at kalde en ikke statisk funktion fra
>> en statisk. Er der ikke en måde man kan gøre det på?
>
>
>Det skyldes formentligt, at du ikke kalder den
>på et object (A), men blot kalder den direkte (B).

Ah tak.

Martin

Michael Berg (01-08-2002)
Kommentar
Fra : Michael Berg


Dato : 01-08-02 20:41

Hej Martin!

"Martin Schultz" <mbox@linuxfreemail.com> wrote in message
news:3d3ed551.5805307@news.cybercity.dk...
> Hvis jeg har en funktion der fx. hedder public void etEllerAndet kan
> jeg ikke kalde den fra fx public static void main med fx.
> etEllerAndet();
>
> Den klager over at jeg forsøger at kalde en ikke statisk funktion fra
> en statisk. Er der ikke en måde man kan gøre det på?

Det må man ikke fordi ikke-statiske metoder kræver et objekt at arbejde på.
Når du er i en statisk metode har du ingen objekt - det gælder fx. i main().
Du kan gøre følgende:

public class MinKlasse {
public int adder(int a, int b) {
return(a+b);
}
public static void main(String args[]) {
int c = new MinKlasse().adder(1,2); // I stedet for at kalde den
direkte

Eksemplet er selvfølgelig lidt søgt - i denne situation ville det
selvfølgelig være klart det nemmeste blot at gøre adder funktionen statisk
også.

Mvh
/Michael





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

Månedens bedste
Årets bedste
Sidste års bedste