Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme?

berserkerdq2

Bekanntes Mitglied
Hi, ich habe eine Klasse, diese ist public und hat eine public Methode, die nicht static ist. Wenn ich nun in einer anderen Klasse, die in einem anderen Package ist, versuche diese über den Klassennamen aufzurufen, also: KlassenName.Methodenname() steht da, dass ich keien Referenz zu eienr non static methode machen kann.

ABER: in der anderen Klasse, wo ich die Methode aufrufe, bin ich selber nicht in einer static Methode, bin jedoch in einem try catch block.
 
Beste Antwort
Kennst du denn den Unterschied bei einer Methode mit und ohne static, bzw. die Bedeutung von static?

Hast du schon von Instanz- und von Klassenmethoden (und in dem Zusammenhang auch Instanz- und Klassenvariablen) gehört?
was hast du getan..

bitte zeig code... ich weis glaub ich wo du rein gelaufen bist aber an eigenen beispiele nerklären ist einfacher
 
Zuletzt bearbeitet von einem Moderator:
Kennst du denn den Unterschied bei einer Methode mit und ohne static, bzw. die Bedeutung von static?

Hast du schon von Instanz- und von Klassenmethoden (und in dem Zusammenhang auch Instanz- und Klassenvariablen) gehört?
 
Zuletzt bearbeitet:
Beste Antwort
Java:
public class Object {
   
    public static void main(String[] args) {
        System.out.println("Iam a static method called main");
        staticMethod();
    }

    static public void staticMethod() {
        System.out.println("I am a static method");
        Object object = new Object();
        instance.nonStaticMethod();
    }

    public void nonStaticMethod() {
        System.out.println("Iam a non-static method");
    }


}
 
It is feasible as long as the static method is public. Because the method is static, we do not need to initialise an object of the class to call it, as we do with instance methods, but may do so directly through the class name.
Assume that we have a static method called foo in A.
Code:
public class A {
    public static int foo() {
        return 1;
    }
}
We can invoke the static method foo from the method xyz or any other method in class B, as shown below.
Code:
public class B {
    public void xyz() {
        int x = A.foo();
    }
}
It is worth noting that we did not create an object of class A. Read this article if you need more clarification. This is due to the fact that static methods and static variables are kept in the class. When a class object is constructed, copies of instance members are generated, but no copies of static members are made.
 
Die Unterscheidung, wann was zu verwenden ist, wird davon bestimmt, ob die Methode an ein bestimmtes Objekt (und ich sage bewusst nicht "Klasse" gebunden ist). Ist sie eine Eigenschaft des Objekts, dann ist sie nicht static und es ist völlig sinnlos, sie aufzurufen, ohne jenes Objekt zu referenzieren.

getAlter(); .... wovon denn bitte?
statisch:
Mensch.getAlter() ..... genauso sinnlos, es sind ja nicht alle Menschen gleich alt.

nicht statisch:
dieserMensch = new Mensch(...);
dieserMensch.getAlter(); ... so kommt man der Sache schon näher.
 

Zurück
Oben