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.
Geerbte Instanz kann keine void Methode ausführen?!
Hi... Folgendes ist mir gerade aufgefallen, und ich finde es unlogisch, warum hier der Fehler "void Type not allowed here" angezeigt wird... Hier mal kurz anskizziert:
Java:
public class a {
private int zaehler = 0;
public void erhoeheZaehler() {
zaehler++;
}
}
public class b extends a {
public static void main(String[] args) {
a instance = new a();
System.out.println(instance.erhoeheZaehler()); // Hier Fehler!
}
}
1.) Ich habe dies mit Lokaler sowie Instanzvariable probiert
2.) Stimmt, dass system.out.println war dumm... ähm, die Methode soll auch garnichts ausgeben, sondern nur die lokaleVariable / Instanzvariable erhöhen. Zum ausgeben würde ich dann eine andere methode public int gibZaehler() (...) schreiben. Mir geht es ledglich darum, dass ich nicht verstehe, warum eine geerbte Instanz keine Void methode ausführen kann?
klar kannst du eine void methode ausführen . du darfst den nicht vorhandenen return wert aber nur nicht einer anderen methode übergeben, die einen parameter erwartet
@Zeeu
Ja, ich weiß wie man dieses "Problem" behebt... Aber ich bereite mich auf eine Klausur vor, wo solches "Fehlerfinden" auch Thema ist, und leider verstehe ich halt nicht den Grund, warum es wie oben nicht klappt.
@Zeeu: einen zähler in der der methode deklarieren und dann zähler+1 zurückliefern? naja da wird dann immer 1 bei rauskommen...
@to: System.out.println(...) erwartet einen parameter. du rufst eine methode auf, die allerdings keinen wert zurückgibt und willst das "nichts" der Methode dann println übergeben. Das geht halt nicht.
edit: bin wohl schon mit einem Bein im Bett, wodurch die Rechtschreibung leidet
Hi... Folgendes ist mir gerade aufgefallen, und ich finde es unlogisch, warum hier der Fehler "void Type not allowed here" angezeigt wird... Hier mal kurz anskizziert:
Java:
public class a {
private int zaehler = 0;
public void erhoeheZaehler() {
zaehler++;
}
public int gibZaehler() {
return zaehler;
}
}
public class b extends a {
public static void main(String[] args) {
a instance = new a();
instance.erhoeheZaehler(); // Hier Fehler!
System.out.println(instance.gibZaehler());
}
}
hast du jetzt noch eine frage? weil obiger code funktioniert... natürlich nur, wenn die beiden klassen nicht in einer datei stehen. eine datei kann nur eine
Mal abgesehen davon, dass ich nicht weiß, was das "extends a" hier bezwecken soll.
Aber wo greift er denn statisch auf eine Instanzmethode zu?
Es wird doch eine Instanz von a erzeugt und über diese auf die Methode zugegriffen.
Oder hab ich da im Halbschlaf etwas übersehen. ;-)