Objektorientierte Programmierung - Kein Plan wieso das nicht funktioniert!

Tienisto

Mitglied
Hi Community!

Hab erst seit ca. 3 Wochen Java gelernt - hatte aber ein bisschen Erfahrung in Sachen Programmierung, aber hab noch nie objektorientiert programmiert. Nun zu meinem Anliegen:

Bei mir kommt immer bei Eclipse ein Nullpointer-Error, und zwar immer wenn ich die Funktion ausführen will.


Beispiel zur Verdeutlichung:

Hierarchie:

MAIN
--Main2
-----KlasseA
-----KlasseB

MAIN:
Java:
public class MAIN {
	
	public static void main(String[] args) {
		
		main2 m2 = new Main2();
		m2.createKlasse();
		m2.start();
	}

}

Main2:
Java:
public class Main2{
	
	KlasseA a;
	KlasseB b;
	
	public void createKlasse()
	{
		a = new KlasseA();
		b = new KlasseB();
	}
	
	public void start()
	{
		b.funktion1();
	}

}

KlasseA:
Java:
public class KlasseA {
	
	public void funktion1()
	{
		System.out.println("F1 - KlasseA");
	}

}

KlasseB:
Java:
public class KlasseB extends main2{
	
	public void funktion1()
	{
		System.out.println("F1 - KlasseB");
		a.funktion1();
	}

}
 
Ich verstehe zwar nicht ganz, warum Du solch eine Anordnung an Klassen hast. Ist wohl zu Testzwecken, oder?

Aber zu Deinem Problem:

Java:
public class KlasseB extends main2{
    
    public void funktion1()
    {
        System.out.println("F1 - KlasseB");
        a.funktion1();
    }
 
}

Was soll hier a sein? Willst Du auf das a von main2 (übrigens, Klassen immer groß schreiben!) zugreifen?! Versuch es mal mit einem "super." davor. Vielleicht klappt es dann.

Oder poste mal die genaue Fehlermeldung, die in der Konsole ausgegeben wird.. Hier findest Du auch genau die Stelle, wo die NullPointer geworfen wird.
 
Hier der Nullpointer-Fehler:
Exception in thread "main" java.lang.NullPointerException
at KlasseB.funktion1(KlasseB.java:7)
at main2.start(main2.java:15)
at main.main(main.java:8)

>> Markiert hat er die Stelle:
Java:
a.funktion1();

und das funktioniert auch nicht:
Java:
super.a.funktion1();
Und ja, das Prog sollte zu Testzwecken dienen^^
 
Zuletzt bearbeitet:
Entweder ist beim Schreiben da was falsch gelaufen oder du hast tatsächlich eine main2 und eine Main2 Klasse:
Java:
 main2 m2 = new Main2();

Was ist der Fall?

In deiner main rufst du nie funktion1 der KlasseB auf, daher kann da irgendwas mit deinem geposteten Code nicht stimmen.
Die NPE kriegst du auf jedenfall deswegen, da das Objekt a niemals initialisiert wurde. Das heißt createKlasse() wurde niemals gerufen für das Objekt.
 
Eigentlich sollte dieser Fehler aber auch durch die IDE (Eclipse oder Netbean etc) angezeigt werden. Ignorierst Du Warnungen einfach?

Gruß

Claus
 
Eigentlich sollte dieser Fehler aber auch durch die IDE (Eclipse oder Netbean etc) angezeigt werden. Ignorierst Du Warnungen einfach?

Gruß

Claus

ignoriert einfach die Groß- und Kleinschreibung, ich hatte im Projekt alles kleingeschrieben, denn ich wollte
lediglich mal schnell das Problem nachkonstruieren. Beim Einfügen in mein Forum-Thema, hatte ich erst die
Kleinschreibung gemerkt und ein Teil davon hatte ich auch geändert, den Rest hatte ich einfach so gelassen...

Also bitte die Groß- und Kleinschreibung einfach ignorieren.

lg Tienisto
 
Ok eigentlich ist der Fehler logisch. Du erzeugst eine Klasse B die von Main2 abgeleitet ist. Du rufst aber nicht CreateClass von dieser erzeugten Instanz der Klasse B auf Somit ist die Klasse A in der Klasse Main2 die wiederum in Klasse B enthalten ist nicht intialisiert. Also rufst Du die nicht intialisierte Klasse A in der Klasse B auf.

Alles klarß 😉

Gruß

Claus

P.S. Mal es Dir mal auf, dann versteht man es leichter.

P.P.S. So ein Konstrukt würde auch niemals jemand wirklich programmieren. Damit schisst man sich ja selber von hiten durch die Brust ins Auge.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben