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.
Hi, ich bin noch anfänger im Programmieren und habe folgendes Problem. Ich habe ein bisschen rumexperiementiert und nun will ich auf das Objekt nka1 die methode2a aufrufen ( Zeile 19). Irgendwie kann ich nicht Test2 an Test1 vererben.
Code:
public class Test1
{
public static void main(String args[])
{
Test1 t1 = new Test1();
Test2 t2 = new Test2();
}
public Test1()
{
NeueKlasse1a nk1a = new NeueKlasse1a();
NeueKlasse1b nk1b = new NeueKlasse1b();
nk1a.methode1a();
nk1b.methode1b();
nk1a.methode1b();
nk1a.methode2a();
}
public class NeueKlasse1a extends NeueKlasse1b
{
public NeueKlasse1a()
{
System.out.println("Konstruktor NeueKlasse1a aufgerufen - Objekt erzeugt!!");
}
public void methode1a()
{
System.out.println("methode1a aufgerufen!!");
}
}
public class NeueKlasse1b
{
public NeueKlasse1b()
{
System.out.println("Konstruktor NeueKlasse1b aufgerufen - Objekt erzeugt!!");
}
public void methode1b()
{
System.out.println("methode1b aufgerufen!!");
}
}
}
class Test2 {
public Test2()
{
NeueKlasse2a nk2a = new NeueKlasse2a();
NeueKlasse2b nk2b = new NeueKlasse2b();
nk2a.methode2a();
nk2b.methode2b();
nk2a.methode2b();
}
public class NeueKlasse2a extends NeueKlasse2b
{
public NeueKlasse2a()
{
System.out.println("Konstruktor NeueKlasse2a aufgerufen - Objekt erzeugt!!");
}
public void methode2a()
{
System.out.println("methode2a aufgerufen!!");
}
}
public class NeueKlasse2b
{
public NeueKlasse2b()
{
System.out.println("Konstruktor NeueKlasse2b aufgerufen - Objekt erzeugt!!");
}
public void methode2b()
{
System.out.println("methode2b aufgerufen!!");
}
}
}
bei inneren Klassen ist das tatsächlich nicht so leicht,
dieses verrückte Konstrukt hier funktioniert anscheinend:
Code:
public class Test1
// extends Test2
{
public static void main(String args[])
{
Test1 t1 = new Test1();
Test2 t2 = new Test2();
}
public Test1()
{
Test2 t2 = new Test2();
NeueKlasse1a nk1a = new NeueKlasse1a(t2);
NeueKlasse1b nk1b = new NeueKlasse1b();
nk1a.methode1a();
nk1b.methode1b();
// nk1a.methode1b();
nk1a.methode2a();
}
public class NeueKlasse1a
extends NeueKlasse2a
{
public NeueKlasse1a(Test2 t)
{
t.super();
System.out.println("Konstruktor NeueKlasse1a aufgerufen - Objekt erzeugt!!");
}
public void methode1a()
{
System.out.println("methode1a aufgerufen!!");
}
}
public class NeueKlasse1b
{
public NeueKlasse1b()
{
System.out.println("Konstruktor NeueKlasse1b aufgerufen - Objekt erzeugt!!");
}
public void methode1b()
{
System.out.println("methode1b aufgerufen!!");
}
}
}
wenn Test1 von Test2 erbt (und NeueKlasse1a von NeueKlasse2a) dann geht auch auch ein normaler Konstruktor,
nk1a.methode1b();
wird in jedem Falle nicht gehen, du kannst nicht von zwei Klassen gleichzeitig erben,
evtl. könnte natürlich NeueKlasse1b von NeueKlasse2irgendwas erben und NeueKlasse1a von NeueKlasse1b