Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
class Auto{
public Porsche(){
int dieWichtigeVariable = 100;
}
}
class{
public static Ausgabe(){
System.out.println(Auto.Porsche().dieWichtigeVariable); // geht das? Bei mir geht das jedenfalls nicht so wie ich will!
//Wenn jemand weiß was ich Falsch mache, bitte melden!
}
}
Hm da sind ziemlich viele Fehler, würd ich sagen aber nicht aufgeben hier mal ein paar erklärungsversuche:
Erst mal zu deiner Ausgabeklasse:
Code:
class{
public static Ausgabe(){
System.out.println(Auto.Porsche().dieWichtigeVariable);
}
}
1. Eine Klasse muss immer einen Namen haben
2. Wenn das die Hauptklasse sein soll mit der das Programm startet, dann muss die Klasse public sein und den gleichen Namen wie die Datei haben. Also
Code:
public class [Dateiname]
{
Deine Methode wird so auch nicht funktionieren, da eine Methode immer einen Rückgabewert haben muss, außer, sie ist der Konstruktor. Ein Rückgabetyp wäre "void", also nichts. Wenn diese Methode dann auch noch der Einstiegspunkt des Programms sein soll, muss sie so aussehen:
Code:
public static void main (String[] args)
Hm... jetzt kommt mir grad die Idee, dass du vielleicht auch einfach die Klasse Ausgabe nennen willst und das zu schreiben vergessen hast, das wäre natürlich auch richtig.
So... jetzt die andere: Da stellt sich erstmal die Frage, was das denn eigentlich sein soll ???:L Die dieWichtigeVariable-Variable muss auf jeden Fall als Instanzvariable deklariert werden, damit die andere Klasse darauf zugreifen kann. Aber was ist das mit dem Porsche? Willst du da etwa ableiten? Das würde so gehen:
Code:
class Auto{
}
class Porsche extends Auto
{
int dieWichtigeVariable;
public Porsche()
{
dieWichtigeVariable = 100;
}
}
Schöner wäre da übrigens, die Variable private zu machen, und dann ne get-Methode zum Zugriff zu machen.
Oder als Konstruktor? Da muss es dann halt
Code:
public Auto()
heißen.
Wenn ich da mal probier reinzuinterpretieren, dass du viele Auto-Subklassen haben willst, die alle eine wichtige Variable haben, mach das am besten so:
Code:
abstract class Auto
{
public abstract int getDieWichtigeVariable();
}
Das heißt, das alle Auto-Subklassen diese Methode haben müssen.
So, das wärs erst mal.
Cu
Edit: Zweiter aber fast gleichzeitig und mehr
Edit by Beni: du bist so gut, da muss ich ihn gar nicht verwirren
Ich glaube die Aussage könnte man evtl. falsch verstehen. Nur ums sicherzustellen: Ein Konstruktor ist keine gewöhnliche Methode. Er darf keinen Rückgabewert haben (hat sich so angehört als dürfte er nur keinen haben). Weiss das du das so gemeint hast, wollte das nur nochmal hervorheben.