Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 17:20

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Java] Static

Discussion on [Java] Static within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2010
Posts: 64
Received Thanks: 3
[Java] Static

Nunja, mein Problem ist, dass ich, wenn ich eine Methode aus einer anderen Klasse in der Main-Klasse ausgeben oder benutzen will er immer meckert, dass die Klasse dafür dann static sein muss, danach muss ich die Variablen auch noch static machen. Gerade gegoogelt wieso static überhaupt da ist und das hat mich dann doch schon etwas verwirrt. Wenn ich auf eine static variable von jeder Klasse aus zugreifen kann, wofür gibt es dann noch die getMethoden? Gibt es eine Möglichkeit wie ich das ganze static umgehen kann und normal mit get und setMethoden in der Main-Klasse arbeiten kann? Irgendwie raffe ich das ganze nicht... Wenn man die Ergebnisse in der Mainmethode aufrufen will kann es dann nämlich schonmal passieren das fast alle Methoden und Variablen static sind und das ist ja nciht der Sinn der Sache...
wasgehtso is offline  
Old 08/04/2013, 16:27   #2
 
elite*gold: 0
Join Date: Aug 2013
Posts: 93
Received Thanks: 11
Also mein Arbeitskollege ist ein "Freak" in diesem Bereich, wenn du bis Heute Abend warten kannst und mir ne PN schreibst als Erinnerung, sag ich ihm er soll dich kontaktieren und dir da weiterhelfen. (Er macht alles natürlich kostenlos und hilft gerne)


MFG
Marley. is offline  
Thanks
1 User
Old 08/04/2013, 17:18   #3
 
Master674b's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 255
Received Thanks: 110
Quote:
Originally Posted by wasgehtso View Post
Nunja, mein Problem ist, dass ich, wenn ich eine Methode aus einer anderen Klasse in der Main-Klasse ausgeben oder benutzen will er immer meckert, dass die Klasse dafür dann static sein muss, danach muss ich die Variablen auch noch static machen. Gerade gegoogelt wieso static überhaupt da ist und das hat mich dann doch schon etwas verwirrt. Wenn ich auf eine static variable von jeder Klasse aus zugreifen kann, wofür gibt es dann noch die getMethoden? Gibt es eine Möglichkeit wie ich das ganze static umgehen kann und normal mit get und setMethoden in der Main-Klasse arbeiten kann? Irgendwie raffe ich das ganze nicht... Wenn man die Ergebnisse in der Mainmethode aufrufen will kann es dann nämlich schonmal passieren das fast alle Methoden und Variablen static sind und das ist ja nciht der Sinn der Sache...
static bedeutet du kannst auf die Funktion oder Variable ohne ein Objekt zugreifen (entspricht einer globalen Variable). Das heißt du musst deine Klasse nicht instanziieren und es gibt diese Variable nur ein mal und nicht pro Objekt. Das Singleton Konzept ist dafür aber oft passender, falls du planst eine Klasse zu erzeugen, die nur aus statischen Methoden / Variablen besteht.
Master674b is offline  
Old 08/04/2013, 17:21   #4
 
South-Park's Avatar
 
elite*gold: 65
Join Date: Apr 2010
Posts: 2,651
Received Thanks: 509
Static Variablen und Methoden beziehen sich auf die ganze Klasse und können so direkt mit dem Klassennamen benutzt werden. Wenn du z.B. eine Klasse so hast:
Code:
public class Auto {
private int geschwindigkeit;

public int getGeschwindigkeit() {
return geschwindigkeit;
}
}
Wenn du dann getGeschwindigkeit in einer anderen Klasse aufrufen willst, ohne sie static zu machen (d.h. ohne sie Klassenabhängig zu machen) muss die andere Klasse so aussehen:
Code:
public class AutoDemo {
public static void main(String[] args) {
Auto auto = new Auto();
int aktuelleGeschwindigkeit = auto.getGeschwindigkeit;

System.out.println("Das auto fährt gerade " + aktuelleGeschwindigkeit);


}
}
Bei weiteren Fragen, frag ruhig :P Wenn eine Methode benutzt werden soll, die nicht static ist, muss mithilfe der Konstruktoren erst ein neues Objekt der Klasse erstellt werden
South-Park is offline  
Old 08/05/2013, 20:16   #5


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,913
Received Thanks: 25,413
^
auto.getGeschwindigkeit();
;O
Quote:
Originally Posted by Master674b View Post
static bedeutet du kannst auf die Funktion oder Variable ohne ein Objekt zugreifen (entspricht einer globalen Variable). Das heißt du musst deine Klasse nicht instanziieren und es gibt diese Variable nur ein mal und nicht pro Objekt. Das Singleton Konzept ist dafür aber oft passender, falls du planst eine Klasse zu erzeugen, die nur aus statischen Methoden / Variablen besteht.
Nein, für zustandslose Methodensammlungen (was ja eine Klasse, die nur aus statischen Methoden oftmals ist), ist eine Singleton eher unpassend.

Wie schon gesagt wurde, static bedeutet nur, dass man auf die Methode / das Datenfeld ohne Objekt zugreifen kann. Da es in diesen Methoden keinen Objekt-Kontext gibt, kann man logischerweise aber nicht auf instanzgebundene Methoden oder Felder derselben Klasse zugreifen, weshalb alles static sein muss, womit du von so einer Methode aus interagieren willst.
Die Lösung ist, deine Variablen einfach nicht zu Membervariablen der Main-Klasse zu machen. Die Main-Klasse soll sowieso so wenig wie möglich mit der Programmlogik zu tun haben. Lokale Variablen reichen.
Im Optimalfall würde das Ganze so ablaufen:
Code:
public class Programm
{
    public static int Main(String[] argv)
    {
        SomeLogicClass obj(42);
        return someLogicClass.doYourJob();
    }
}
Mit Settern und Gettern hat das Ganze wenig im am Hut.
MrSm!th is offline  
Reply


Similar Threads Similar Threads
[JAVA Error] Could not create the java virtual machine
07/21/2013 - Technical Support - 10 Replies
Schönen Abend! Leider hat es sich aus einem unerfindlichen Grund ergeben, dass sobald ich die Minecraft.exe starten will die Errormeldung kommt. Die Tips auf Minecraft.net habe ich schon ohne Erfolg befolgt. Hoffe ihr könnt mir weiterhelfen... Mein PC:
recompile Problem (Block.java, item.java)
04/13/2013 - Minecraft - 1 Replies
Guten Morgen liebe Com (: Ich versuche etwas neues in Minecraft.. für mich einzubauen.. neuer Block + das Item dazu, des eingepflanzt werden muss.. wie bei einer Karotte oder einer Kartoffel. Ich zeige euch den Inhalt meiner BlockOnion.java package net.minecraft.src;
[Java] Could not create the Java virtual machine
06/22/2011 - Minecraft - 1 Replies
hallo ihr minecraftler ^^ habe seit heute das problem das wenn ich minecraft starte original als auch cracked das diese fehlermeldung kommt: Java virtual machine Launcher Could not create the Java virtual machine



All times are GMT +2. The time now is 17:21.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.