Hallo,
ich komme hier irgendwie nicht dahinter wieso bei meinem Code immer eine NullPointerException erstellt wird
[CODE lang="java" title="Klasse Rechteck" highlight="22"] private int laenge;
private int breite;
Rechteck() {
}
Rechteck(int x, int y, int laenge, int breite, String titel, Color farbe) {
Figur figur = new Figur(x, y, titel, farbe);
this.laenge = laenge;
this.breite = breite;
}
public int getL() {
return laenge;
}
public int getB() {
return breite;
}
public void getInfo() {
System.out.println("Position: x = " + getX() + ", y = " + getY() +
"\nLänge: " + getL() + " px" +
"\nBreite: " + getB() + " px" +
"\nBezeichnung: " + getTitel() +
"\nColor: " + getColor());
}[/CODE]
[CODE lang="java" title="Klasse Figur" highlight="19-21"]
import java.awt.*;
public class Figur {
private int x;
private int y;
private String titel;
private Color farbe;
Figur() {
}
Figur(int x, int y, String titel, Color farbe) {
this.x = x;
this.y = y;
this.bezeichnung = titel;
this.farbe = farbe;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setXY(int x, int y) {
this.x = x;
this.y = y;
}
public String getTitel() {
return bezeichnung;
}
public void setTitel(String titel) {
this.titel = titel;
}
public Color getColor() {
return farbe;
}
public void setColor(Color farbe) {
this.farbe = farbe;
}
}
[/CODE]
[CODE lang="java" title="Klasse Main" highlight="8"]import java.awt.*;
public class Main {
public static void main(String[] args) {
// Rechteck(x, y, länge, breite, titel, farbe)
Rechteck rechteck = new Rechteck(1, 1, 20, 30, "Rechteck 1", Color.blue);
rechteck.getInfo();
}
}
[/CODE]
Wenn ich der Klasse Rechteck die getter Methoden hinzufüge, geht der Fehler weg.
Aber ich möchte in Zukunft mehrere Subklassen erstellen, die die gleichen Funktionen haben sollen. Dafür benutzt man doch eigentlich eine Superklasse, oder?
Verstehe ich das richtig?:
- ich erstelle in einer unabhängigen Klasse ein Attribut einer Subklasse
- Im Konstruktor der Subklasse wird (teilweise) für die gewünschten Parameter die Superklasse verwendet und diese sollen in dem Attribut "gespeichert" werden
- beim Rufen der getter Methoden (die sich in der Superklasse befinden) für die gewünschten Parameter, wurde in der Superklasse kein Objekt gefunden, oder zwischengespeichert und deswegen wir ein Nullobjekt erstellt?
- nur wenn die Subklasse auch die getterMethode erhält, kann man dadurch die Info über die parameter bekommen?
ich komme hier irgendwie nicht dahinter wieso bei meinem Code immer eine NullPointerException erstellt wird
[CODE lang="java" title="Klasse Rechteck" highlight="22"] private int laenge;
private int breite;
Rechteck() {
}
Rechteck(int x, int y, int laenge, int breite, String titel, Color farbe) {
Figur figur = new Figur(x, y, titel, farbe);
this.laenge = laenge;
this.breite = breite;
}
public int getL() {
return laenge;
}
public int getB() {
return breite;
}
public void getInfo() {
System.out.println("Position: x = " + getX() + ", y = " + getY() +
"\nLänge: " + getL() + " px" +
"\nBreite: " + getB() + " px" +
"\nBezeichnung: " + getTitel() +
"\nColor: " + getColor());
}[/CODE]
[CODE lang="java" title="Klasse Figur" highlight="19-21"]
import java.awt.*;
public class Figur {
private int x;
private int y;
private String titel;
private Color farbe;
Figur() {
}
Figur(int x, int y, String titel, Color farbe) {
this.x = x;
this.y = y;
this.bezeichnung = titel;
this.farbe = farbe;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setXY(int x, int y) {
this.x = x;
this.y = y;
}
public String getTitel() {
return bezeichnung;
}
public void setTitel(String titel) {
this.titel = titel;
}
public Color getColor() {
return farbe;
}
public void setColor(Color farbe) {
this.farbe = farbe;
}
}
[/CODE]
[CODE lang="java" title="Klasse Main" highlight="8"]import java.awt.*;
public class Main {
public static void main(String[] args) {
// Rechteck(x, y, länge, breite, titel, farbe)
Rechteck rechteck = new Rechteck(1, 1, 20, 30, "Rechteck 1", Color.blue);
rechteck.getInfo();
}
}
[/CODE]
Wenn ich der Klasse Rechteck die getter Methoden hinzufüge, geht der Fehler weg.
Aber ich möchte in Zukunft mehrere Subklassen erstellen, die die gleichen Funktionen haben sollen. Dafür benutzt man doch eigentlich eine Superklasse, oder?
Verstehe ich das richtig?:
- ich erstelle in einer unabhängigen Klasse ein Attribut einer Subklasse
- Im Konstruktor der Subklasse wird (teilweise) für die gewünschten Parameter die Superklasse verwendet und diese sollen in dem Attribut "gespeichert" werden
- beim Rufen der getter Methoden (die sich in der Superklasse befinden) für die gewünschten Parameter, wurde in der Superklasse kein Objekt gefunden, oder zwischengespeichert und deswegen wir ein Nullobjekt erstellt?
- nur wenn die Subklasse auch die getterMethode erhält, kann man dadurch die Info über die parameter bekommen?