Vervollständigen sie das folgende Programm...

Didilicious

Mitglied
Hallo alle zusammen!
Ich bin echt am verzweifeln, ich soll ein Programm vervollständigen verstehe aber absolut nicht wie ich da hin kommen soll :/
Ich hoffe das das mir hier vlt geholfen werden kann. Vielen dank schonmal an alle die sich hier einbringen!

Java:
public class Extend {
        public static void testA(A [] a) {
        for(A x :a)
            x.doit();
           
           
    }
    public static void testB(B [] b) {
        for(B x : b);
        System.out.println(x.makeIt());
           
    }

    public static void main (String[]args) {
        A[] a = {new A(),new c(34),new A(12)};
        testA(a);
        testB(a);
    }
}

Die Ausgabe soll folgendermaßen aussehen:
A17
A34
A12
1
2
3
 
Zuletzt bearbeitet:

fhoffmann

Top Contributor
Du hast drei Klassen: A, B und C.
Diese erben irgendwie voneinander.
Überlege dir doch erst einmal, wie diese Vererbung aussehen muss, damit der obige Code kompiliert werden kann.
 

Didilicious

Mitglied
Ist denn das "A" im Array das selbe A wie im elementbezeichner der foreach schleife?
Ich tue mich gerade wahnsinnig schwer, was da für eine logik hintersteckt.
In der Array Initialisierung werden Objekte der Klassen A und B erzeugt, die in das Array a geschrieben werden, das vom Typ A ist oder ist das einfach nur um zu verwirren?
 
K

kneitzel

Gast
Also da ist nichts um dich zu verwirren. Und A, B und C meinen da alle die jeweilige Klasse.

Und du musst aufpassen: In das Array vom Typ A[] kommen nur Instanzen von Typ A und C. Nicht von Typ B.

Aber die Variable vom Typ A[] wird an eine Methode gegeben, welche ein Array vom Typ B erwartet.
 

Didilicious

Mitglied
Also C muss von A erben, da es in ein Array vom Typ A geschrieben werden soll. Außerdem brauche ich einen Konstruktor, der einen Int wert erwartet und einen der nichts erwartet: new A (), und new A(12).
Ich glaube ich werde noch verrücktr bei dieser Aufgabe
 
K

kneitzel

Gast
Das ist doch schon ein Anfang ....

was lässt sich denn jetzt schon übersetzen und wo hakt es noch?
 

Didilicious

Mitglied
in der main Methode bekomme ich jetzt keine fehler mehr, er sagt mir allerdings das klasse A bereits definiert ist

Java:
class A{
    
    public A(int i) {
    }
    
    public A() {
    }

}

class C extends A{

    public C(int i) {
    }
    
    
}
 
K

kneitzel

Gast
Dann wäre die Frage, was Du da genau an Code hast. Hast Du ggf. noch mehr Dateien in deinem Projekt? Die Klasse Extends, die Du uns gezeigt hast, definiert noch keine Klasse A.

Ansonsten würde ich noch erwarten, dass Du noch ein Fehler bekommen musst, denn die Klasse B hast Du noch nicht (zumindest nicht uns gezeigt).
 

Didilicious

Mitglied
Du hast natürlich recht. Bei testB bekomme ich einen Fehler weil ein Array vom Typ A übergeben bekommt und eines vom Typ B erwartet. Das Problem mit Class A hat sich erledigt. So sieht der gesamte Code aus:

Java:
class A{   
    public A(int i) {
            
    }
        
    public A() {
            
    }

}

class C extends A{

    public C(int i) {
    }
        
        
}
class B{

}

    public class Extend {
            public static void testA(A [] a) {
            for(A x :a)
                x.doit();
                
                
        }
        public static void testB(B[] a) {
            for(B x : a);
            System.out.println(x.makeIt());
                
        }

        public static void main (String[]args) {
            A[] a = {new A(),new C(34),new A(12)};
            testA(a);
            testB(a);
        }
    }
 

Didilicious

Mitglied
Ja weil ja die Klasse testB mit dem array vom Typ A füttern möchte und dort ein Array vom typ A erwartet wird. deswegen muss B die eigenschaften von A erben oder? Jetzt ist das Ganze bis auf die Methoden "doit" und "makeit" fehlerfrei.
 
Zuletzt bearbeitet:

Didilicious

Mitglied
So die Ausgabe habe ich jetzt geschafft. ich glaube allerdings, dass die Ausgabe 1,2,3 etwas geschummelt ist xD
Java:
class A extends B{

    public A(int i) {
        Zahl2=3;
        Zahl = i;
        Buchstabe = "A";
        System.out.println("Konstruktor von A");
        }
        
    public A() {
        Zahl2=1;
        Zahl =17;
        Buchstabe="A";
            
    }

    public void doit() {
        System.out.println(Buchstabe+Zahl);
        
        
    }

    }

class C extends A{

    public C(int i) {
        Zahl2=2;
        Zahl =i;
        Buchstabe = "A";
        System.out.println("Konstruktor von C");
    }
}

class B{
    public  int Zahl;
    public static String Buchstabe;
    public int Zahl2;
    public int  makeIt() {
        
        return Zahl2;
        
    }

    }


    public class Extend {
            public static void testA(A [] a) {
            for(A x :a) {
                x.doit();
                
            }
                
        }
        public static void testB(B[] a) {
            for(B x : a) {
                System.out.println(x.makeIt());
            }
                
        }

        public static void main (String[]args) {
            A[] a = {new A(),new C(34),new A(12)};
            testA(a);
            testB(a);
        }

    }
 

Neue Themen


Oben