Sie müssen den Unterschied zwischen einer Klasse und einer Instanz dieser Klasse verstehen. Wenn Sie ein Auto auf der Straße sehen, wissen Sie sofort, dass es sich um ein Auto handelt, auch wenn Sie nicht sehen können, welches Modell oder welcher Typ. Dies liegt daran, dass Sie das, was Sie sehen, mit der Klasse "Auto" vergleichen. Die Klasse enthält, die allen Autos ähnlich ist. Betrachten Sie es als Vorlage oder Idee.
Gleichzeitig ist das Auto, das Sie sehen, eine Instanz der Klasse "Auto", da es alle Eigenschaften hat, die Sie erwarten: Es fährt jemand, es hat einen Motor, Räder.
Die Klasse sagt also "alle Autos haben eine Farbe" und die Instanz sagt "dieses spezielle Auto ist rot".
In der OO-Welt definieren Sie die Klasse und innerhalb der Klasse definieren Sie ein Typfeld Color
. Wenn die Klasse instanziiert wird (wenn Sie eine bestimmte Instanz erstellen), ist der Speicher für die Farbe reserviert, und Sie können dieser bestimmten Instanz eine Farbe geben. Da diese Attribute spezifisch sind, sind sie nicht statisch.
Statische Felder und Methoden werden von allen Instanzen gemeinsam genutzt. Sie gelten für klassenspezifische Werte und nicht für eine bestimmte Instanz. Bei Methoden sind dies normalerweise globale Hilfsmethoden (wie Integer.parseInt()
). Für Felder sind es normalerweise Konstanten (wie Autotypen, dh etwas, bei dem Sie eine begrenzte Menge haben, die sich nicht oft ändert).
Um Ihr Problem zu lösen, müssen Sie eine Instanz Ihrer Klasse instanziieren (ein Objekt erstellen), damit die Laufzeit Speicher für die Instanz reservieren kann (andernfalls würden sich verschiedene Instanzen gegenseitig überschreiben, was Sie nicht möchten).
Versuchen Sie in Ihrem Fall diesen Code als Startblock:
public static void main (String[] args)
{
try
{
MyProgram7 obj = new MyProgram7 ();
obj.run (args);
}
catch (Exception e)
{
e.printStackTrace ();
}
}
// instance variables here
public void run (String[] args) throws Exception
{
// put your code here
}
Die neue main()
Methode erstellt eine Instanz der Klasse, die sie enthält (klingt seltsam, aber da main()
sie mit der Klasse anstatt mit der Instanz erstellt wird, kann sie dies tun) und ruft dann eine Instanzmethode ( run()
) auf.
C
. Aber es wird nicht sehr gut. Versuchen Sie, Java so zu verwenden, wie es verwendet werden soll, als objektorientierte Sprache.