Nochmel eine Zugriffsfrage! FRAGE 2!

Status
Nicht offen für weitere Antworten.

Skipy

Mitglied
Folgendes:
Code:
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!



}
}


Thanx
Skipy[/code]
 
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
 
Illuvatar hat gesagt.:
Deine Methode wird so auch nicht funktionieren, da eine Methode immer einen Rückgabewert haben muss, außer, sie ist der Konstruktor.
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.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben