OOP Funktion in Subklasse aufrufen

donnar

Mitglied
Hallo,

ich arbeite zur Zeit an zwei Klassen, die miteinander in Beziehung stehen.
[JAVA=42]
public class Generator extends PApplet {
//...
public void ausfuehren(){
Vektor vObj = new Vektor();
vObj.zeichne();
}
//...
}

public class Vektor extends Generator {
//....
public void zeichne() {
line(0.0, 0.0, 10.0, 10.0);
}
//...
}
[/code]
PApplet wird von der Processing Bibliothek zur Verfügung gestellt (Processing 1.0). Wenn ich die Methode "zeichne()" in der Klasse "Generator" stehen habe und ausführen möchte, funktioniert dies ohne Probleme. Wenn ich die Methode so wie im Code stehend aus der Klasse Vektor starte, entsteht eine "NullPointerException" für "processing.core.PApplet.lerpColor".

Was muss ich umschreiben, damit ich die Funktion "line()" auch in der Klasse "Vektor" aufrufen kann?
 
S

SlaterB

Gast
schade dass du die Methode line() nicht postest oder näher auf die NullPointerException eingehst

das Ursprungs-Generator-Objekt wird sicher speziell von außen initialisiert,
etwa wenn es ein richtiges Applet ist vom Browser aus,
Parameter im Konstruktor, init-Methoden usw.

bei new Vektor() passiert nix weiter, da fehlt dann vielleicht etwas
 

donnar

Mitglied
Hier nochmal die erweiterte Fehlermeldung:
Exception in thread "Animation Thread" java.lang.NullPointerException
at processing.core.PApplet.line(PApplet.java:7100)
at Vektor.zeichne(Vektor.java:103)

Die Methode "line(x1,y1,x2,y2)" zeichnet eine Linie (siehe: line() \ Language (API) \ Processing 1.0 und PApplet) und wird in der Klasse PApplet definiert.

Wie bereits erwähnt funktioniert die Methode "line()" in der Klasse Generator, aber nicht in der Klasse Vektor.
Liegt es daran, dass nur die Klasse Generator von PApplet extended? Müsste die Klasse Vektor dadurch nicht die selben Methoden besitzen, wie die Klasse Generator?
 

mvitz

Top Contributor
Hm und noch was. Ist das nicht eine Zirkuläre Abhängigkeit?

Die Klasse Generator kennt die Unterklasse Vektor. Vektor kann man nicht ohne Generator und Generator nicht ohne Vektor kompilieren. Oder sehe ich das falsch?
 
S

SlaterB

Gast
> Müsste die Klasse Vektor dadurch nicht die selben Methoden besitzen, wie die Klasse Generator?

klar hat sie dieselben Methoden, sonst gäbe es auch Fehlermeldungen wie 'Methode nicht gefunden',
aber gleiche Methoden reicht nicht immer,
ob eine Methode auch zufriedenstellend ausgeführt wird hängt noch von drei anderen Dingen ab:
1. den Zustand des restlichen Gesamtprogramms, hier eher irrevant
2. die Parameter der Methode, dürften hier in Ordnung sein
3. und ganz wichtig wie schon in der ersten Antwort geschrieben: der ZUSTAND des Objektes, intern gesetzte Attribute, auf die in den Methoden zugegriffen wird

das erste Generator-Objekt ist initialisiert, das zweite Vector-Objekt (auch ein Generator-Objekt) nicht, so meine Vermutung


Beispiel:
Java:
public class Test {
    public static void main(String[] args)   {
        A a = new A();
        a.info = "Test";
        a.x(); // funktioniert

        B b = new B();
        b.x(); // NullPointerException, info nicht gesetzt
    }
}
class A{
    String info;
    public void x() {
        System.out.println("info sub: " + info.substring(2));
    }
}
class B extends A {
}
 
Zuletzt bearbeitet von einem Moderator:

donnar

Mitglied
>>Ist das nicht eine Zirkuläre Abhängigkeit?
Ja.

>>das erste Generator-Objekt ist initialisiert, das zweite Vector-Objekt (auch ein Generator-Objekt) nicht, so meine Vermutung
Ich verstehe dein Beispiel, kann es aber nicht auf mein aktuelles Projekt anwenden. Ich musste bisher kein Objekt line() initialisieren und konnte einfach darauf zugreifen.
 
S

SlaterB

Gast
tja, hängt alles vom Gesamtprogramm ab, poste doch bisschen mehr Code

hier noch ein Zitat vom Link
PApplet
oben Beschreibung eines Beispiels:
PApplet embed = new Embedded();
add(embed, BorderLayout.CENTER);

// important to call this whenever embedding a PApplet.
// It ensures that the animation thread is started and
// that other internal variables are properly set.
embed.init();

--------

du könntest grundsätzlich deine Subklassen nicht von PApplet erben lassen sondern das Generator-Objekt im Konstruktor übergeben,

zeichne() sieht dann so aus:
Java:
public void zeichne() {
   this.gen.line(..);
}
gen als Klassenattribut
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Hm und noch was. Ist das nicht eine Zirkuläre Abhängigkeit?

Die Klasse Generator kennt die Unterklasse Vektor. Vektor kann man nicht ohne Generator und Generator nicht ohne Vektor kompilieren. Oder sehe ich das falsch?

Das bekommt der Compiler schon hin

Java:
public class B {
  private A a;
  public void setA(A a){
	  this.a = a;
  }
  public String toString(){
	  return "B";
  }
}

Java:
public class A {
  private B b;
  
  public void setB(B b){
	  this.b = b;
  }
  public String toString(){
	  return "A";
  }
}

Java:
public class Test {
	public static void main(String[] arg){
		A a = new A();
		B b = new B();
		a.setB(b);
		b.setA(a);
		System.out.println(a);
		System.out.println(b);
	}
}
 
G

Gast2

Gast
Und warum nicht? Hierachische Domänen sind zwar in Westeuropa normalerweise vorherrschend aber es gibt bestimmt auch Anwendungsgebiete für soetwas.

Henne - Ei ;)

Java:
Henne a = new Henne("Rosi");
Ei e = a.legeEi();
Henne b = e.schluepfeHenne("Froni");
 
Zuletzt bearbeitet von einem Moderator:

donnar

Mitglied
Vielen Dank an die vielen Antworten. Leider konnte ich auch damit nicht viel anfangen...ich habe jedoch einen anderen Weg gefunden:
[JAVA=42]
public class Generator extends PApplet {
//...
public void ausfuehren(){
Vektor vObj = new Vektor();
vObj.zeichne();
}
//...

class Vektor {
//....
public void zeichne() {
line(0.0, 0.0, 10.0, 10.0);
}
//...
}
}
[/code]

Damit kann ich endlich auf die Methode line zugreifen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie greife ich auf die Funktion der Subklasse zu? Java Basics - Anfänger-Themen 5
W Umgang mit Graphics unklar : Erstellung u Uebergabe an Funktion Java Basics - Anfänger-Themen 18
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
I Generische Funktion Java Basics - Anfänger-Themen 3
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
M toDouble Funktion Java Basics - Anfänger-Themen 3
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
X Ackermannsche Funktion Java Basics - Anfänger-Themen 32
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
P Dezimal zu Hexadezimalzahl Funktion Java Basics - Anfänger-Themen 5
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
B Funktion mit mehreren Rückgabewerten aka Prozeduren? Java Basics - Anfänger-Themen 12
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
D Funktion nur 1 Rueckgabewert Java Basics - Anfänger-Themen 9
M Wie lang eine Funktion/Methode? Java Basics - Anfänger-Themen 51
N den inhalt eines array per funktion ausgeben Java Basics - Anfänger-Themen 8
R Ackermann Funktion Java Basics - Anfänger-Themen 2
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
E Contain-funktion überlisten Java Basics - Anfänger-Themen 4
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
S Funktion in Klasse auslagern Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
D Nullstellen einer Funktion 3. Grades mit Horner Schema Java Basics - Anfänger-Themen 6
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
B Zugriffe in einer Klasse / Funktion Java Basics - Anfänger-Themen 9
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
J Array innerhalb einer Funktion mehrfach iniatilisieren Java Basics - Anfänger-Themen 4
T Lambda-Funktion bei Binärbäumen Java Basics - Anfänger-Themen 13
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
S Threads run - Funktion wird nur einmal ausgeführt. Java Basics - Anfänger-Themen 8
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
R If Funktion funktioniert nicht :P Java Basics - Anfänger-Themen 3
H Funktion in Hintergrund und Vordergrund ausführen Java Basics - Anfänger-Themen 11
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
S Funktion eines Stacks Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
T Klassen Funktion in einem Funktionsaufruf definieren Java Basics - Anfänger-Themen 3
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
X Eval-Funktion mit Variable Java Basics - Anfänger-Themen 2
T Screenreader Funktion Java Basics - Anfänger-Themen 2
S Wertetabelle einer Funktion f : R -> R Java Basics - Anfänger-Themen 1
P Methoden suche funktion die char wert ausgibt wenn man numerischen wert und radix angibt Java Basics - Anfänger-Themen 1
1 repaint() Funktion erzeugt Flackern Java Basics - Anfänger-Themen 33
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
F Funktion immer zur vollen Stunde? Java Basics - Anfänger-Themen 3
S ResultSet close() in funktion nich möglich. Java Basics - Anfänger-Themen 8
C Meine erste Funktion Java Basics - Anfänger-Themen 12
J Funktion um JSON per Post senden/emfangen Java Basics - Anfänger-Themen 3
G OOP Aus Objekt auf Funktion der erzeuger Klasse zugreifen? Java Basics - Anfänger-Themen 11
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
M Interface als Konstruktorparameter nutzen, um Funktion zu plotten Java Basics - Anfänger-Themen 14
NR_EIGHT Benutzereingabe in Funktion verpacken Java Basics - Anfänger-Themen 4
J Funktion definieren und ausfuehren Java Basics - Anfänger-Themen 27
D Loop Funktion für Robot Klasse Java Basics - Anfänger-Themen 5
N mathematische Funktion Java Basics - Anfänger-Themen 29
R Programm verstehen, Funktion Java Basics - Anfänger-Themen 4
C Automatisches Ausfuehren einer Funktion beim Laden eines Jar files Java Basics - Anfänger-Themen 3
O Nicht Standard Form boolesche Funktion in Standard Form parsen Java Basics - Anfänger-Themen 3
F Sleep Funktion Java Basics - Anfänger-Themen 12
S Euklid Funktion Java Basics - Anfänger-Themen 8
H Funktion mit Argumenten Java Basics - Anfänger-Themen 5
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
O Probleme mit der repaint-Funktion Java Basics - Anfänger-Themen 6
F Eine Frage über paint() Funktion Java Basics - Anfänger-Themen 2
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben