Gibt es globale Variablen wie in C++ auch in Java ? Wenn ich die Variablen vor den Main-Funktion deklariere, kommt er damit nicht zurecht und spuckt Fehler, in C++ geht das so aber einwandfrei. Was muss ich tun, um auch in Java das zu erreichen ?
mfg
[-edit-]
So soll es funktionieren
Code:
import java.io.*;
public class Schuldentilgung
{
double kreditbetrag = 10000, zinssatz = 5, annuitaet = 1200, zinsen,
restschuld, zinssumme = 0, abtrag, rueckzahlsumme;
public static void main (String[] args)
{
zinssatz = 10;
}
}
Aber beim Zugriff auf Zinssatz meckert er mir dann
Code:
non-static variable zinssatz cannot be referenced from a static context
Ich würde Dir empfehlen pack die Variablen, die 'überall' verfügbar sein sollen entweder in die System-Properties oder in ein Interface (m.E. die bessere Alternative)
import java.io.*;
interface myConst
{
public int i = -1;
}
public class Schuldentilgung
{
int i = myConst.i;
public static void main (String[] args)
{
System.out.println(i);
}
}
was mache ich falsch ? Fehlermeldung bleibt dieselbe wie oben bereits gepostet...
Siehe mein Post oben! Das hat nichts mit global oder nicht global zu tun! Du versucht in einer statischen Methode (main) auf nicht-statische Eigenschaften der Klasse Schuldentilgung zuzugreifen. Das geht aber nicht!
Naja ok funktioniert jetzt, aber wenn ich mir jetzt ein Programm baue mit 10 Variablen, die sich während der Laufzeit mehrmals ändern, dann kann man das doch so nicht realisieren oder ? Wäre ja dann ein riesiger Umfang ? oder steige ich immer noch nicht durch
Bei Konstanten ist es ja auch ok, aber hier nicht.
Im Normalfal sind doch nicht konstante, globale Variable schied - und wenn sie nicht private sind so wieso. Meine Meinung.
[edit]
deathbyaclown hat gesagt.:
Ein Interface als Konstanten - Bank... AUTSCH !!!
Ist nicht der Sinn und Zweck eines Interfaces.... Big NO NO
static weil:
Wenn du das Interface mal implementierst sparste Ressourcen, weil die Instanzen der Klasse nicht jeder ihre eigenen Konstanten mitschleppen, obwohl diese für jede Instanz gleich sind..
static weil:
Wenn du das Interface mal implementierst sparste Ressourcen, weil die Instanzen der Klasse nicht jeder ihre eigenen Konstanten mitschleppen, obwohl diese für jede Instanz gleich sind..
Ich komm mit Interfaces mal gar nicht klar...verstehe den ganzen Ansatz irgendwie nicht...habe jetzt den Code
Code:
import java.io.*;
public class Schuldentilgung
{
double kreditbetrag = 10000, zinssatz = 5, annuitaet = 1200, zinsen,
restschuld, zinssumme = 0, abtrag, rueckzahlsumme;
public Schuldentilgung()
{
zinssatz = 10;
}
public static void main (String[] args)
{
new Schuldentilgung();
}
}
Die zuweisung zinssatz = 10; scheint zu klappen, aber sobald ich in main eine Zeile einfüge
Code:
System.out.println(zinssatz);
meckert er sofort wieder "non-static variable zinssatz cannot be referenced from a static context"
Ist das schon OO oder wieso kenne ich das alles noch nicht ? Sowas kam bisher nirgends dran, daher bin ich auch relativ ratlos !
Was bringt mir der Aufruf von new Schuldentilgung(); (und wieso new). und wieso muss ich das aufrufen, das ding ändert doch nur den wert von zinssatz...wie mache ich es, wenn der benutzer den wert eingeben soll ? Und wieso komme ich im main nicht an den wert ran ?`muss ich da immer alles hin und her übergeben ? und was zum teufel hat es mit dem static auf sich :/
Interface sind Schnittstellen. Sie definieren ein Verhalten einer Klasse sodass unabhängig von ihrer Implementierungen andere Klassen die Schnittstelle nutzen können.
Eine reine Konstantenbank als Interface widerspricht dem Sinn und Zweck eines Interfaces ! Klar hat Sun die SwingConstants als Interface definiert, aber Falsches macht das noch nicht Richtig.
Aus meiner Sicht ist das einfach "Missbrauch". Und dann noch per implements - da sträuben sich mir alle Java Haare am Körper.
Nein - für mich ist das Pfui und ich will auch sowas in Programmen nicht sehen.
Für Konstanten
1. Properties datei
2. final class von mir aus auch
Und was sagt ihr zu sachen wie javax.swing.Action.
Ich bin auch der Meinung, dass man sich auch welche in nicht final Klassen halten kann. Ist doch auch Gang und Gebe.
Oder reden wir an einander vorbei? Ich reden von static Konstanten allgemein nicht nur von irgendwelchem Propertyzeugs.
Und was sagt ihr zu sachen wie javax.swing.Action.
Ich bin auch der Meinung, dass man sich auch welche in nicht final Klassen halten kann. Ist doch auch Gang und Gebe.
Oder reden wir an einander vorbei? Ich reden von static Konstanten allgemein nicht nur von irgendwelchem Propertyzeugs.
Action ist doch auch ein Interface, wenn ich nicht irre!?
Außerdem: Hier wird das Wort 'interface' immer als 'Schnittstelle' übersetzt. Das ist aber eine unvollständige Übersetzung. Ein 'interface' kapselt nämlich die Gemeinsamkeiten zwischen Klassen, die keine Beziehungen zu einander haben. Und somit gehören dazu IMHO auch Konstanten.