ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
2033
2033
EMPFEHLEN
-
Hi,
ich habe folgendes Problem:
Ich habe eine eigene Klasse "KMaske0" geschrieben,die aus "Component" erbt.
In der KMaske0 stehen Konstruktoren,Methoden,erzeugte Objekte.,...
Weiterhin hab ich ne "KMaske1" erstellt,die aus "KMaske0" erbt.
In der "KMaske1" stehen mehrere Methoden zum Sortieren und Visualisieren des Sortiervorgangs.
Nun soll ich eine weitere Klasse"Sortierverfahren" erstellen, die aus "KMaske1" erbt. Als Fehler bekomme ich angezeigt,dass in "KMaske1" keine Konstruktoren vorhanden sind....... Und nun?
Wie bekomme ich die Aufgabe erfüllt,dass "Sortierverfahren" aus "KMaske1" erbt?
Danke schonmal =)
steff / kittie
-
05.04.04 18:11 #2
Also ohne den Quellcode zu sehen, ist das schwierig. Ich müsste zum Beispiel wissen, an welcher Stelle der Fehler auftritt?
Poste doch einfach mal den Quellcode von 'KMaske1' und 'Sortierverfahren'.
Oder schick's mir per PN.
-
also Quellcode von "Sortierverfahren":
import java.awt.*;
import java.applet.Applet.*;
class Sortierverfahren extends KMaske1
{
private Applet app;
protected Choice= new Choice();
Choice auswahl;
Sortierverfahren(Applet a,String ue)
{
super(a,ue,"Visualisierung von Sortierverfahren");
}
public void starte()
{
auswahl.add("BubbleSort");
auswahl.add("austauschSort");
protected void starten()
{
startKnopf.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
switch(auswahl.getSelectedIndex())
{
// da fehlen jetz noch die methoden......
}
}
}
}
Also diese Klasse ist noch nicht vollständig..Aber mein Hauptproblem liegt darin,eine Mehrfachvererbung hinzukriegen.
KMaske1 ist:
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
class KMaske1 extends KMaske0
{
private Applet app;
protected int breiteC = 350, hoeheC = 350;
protected Color hintergrund = Color.black;
protected Color vordergrund = Color.red;
protected Canvas malflaeche = new Canvas();
protected int anzahl = 50;
protected Button generierTaste = new Button("Generieren");
protected Button darstellTaste = new Button("Darstellen");
KMaske1 (Applet a,String ue)
{
super( a,ue,"Anzahl");
}
public void starte()
{
listenFelder = 12;
eingabe1.setText(""+anzahl);
pSued.add(generierTaste);
pSued.add(darstellTaste);
super.starte();
malflaeche.setBackground(hintergrund);
malflaeche.setForeground(vordergrund);
malflaeche.setSize(breiteC, hoeheC);
pMitte.add(malflaeche);
generierTaste.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
generieren();
}
});
darstellTaste.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
darstellen();
}
});}
protected void loeschen()
{
super.loeschen(); //Löschen der Liste
Graphics g = malflaeche.getGraphics(); //Löschen der Malfläche durch Übermalen
g.setColor(hintergrund); // mit der Hintergrundfarbe
g.fillRect(0,0, malflaeche.getSize().width, malflaeche.getSize().height);
g.dispose(); //Freigabe der von g belegten Ressourcen
}
protected void iFuegeAn(int i)
{
super.iSchreibe(i); //Erweitern der Liste
//plott(liste.getItemCount() - 1,i,vordergrund); //Graph.Pendant
}
protected int iLiesListe(int pos) //aus der Liste lesen
{
return Integer.valueOf(liste.getItem(pos)).intValue();
}
protected void plott(int i,int d,Color c) //eine Kreisscheibe in der angg.Farbe
{ //auf Malfläche zeichnen
Graphics g= malflaeche.getGraphics();
g.setColor(c);
g.fillOval(i*5,(int)(hoeheC - 5 - 5*d),5,5); //Mittelpunkt,Achsen(d.Punktes)
g.dispose();
try{
Thread.sleep(50); } //50 Millisekunden Pause
catch (InterruptedException e){ } //Ausnahmebehandlung
}
protected void iErsetze(int i,int k)
{
int vorher;
vorher=iLiesListe(i);
liste.replaceItem(String.valueOf(k),i);
plott(i,vorher,hintergrund); //vorhergehende darstellung wird übermalt
plott(i,k,vordergrund); //neuer Punkt mir Vordergrund
}
protected void iTausche(int i,int k)
{
int di,dk;
di=iLiesListe(i);dk=iLiesListe(k);
iErsetze(i,dk);
iErsetze(k,di);
}
protected void generieren()
{
anzahl=iLies(eingabe1);
super.loeschen(); // "loeschen" =Löschmethode aus KMaske0
for(int i=0;i<anzahl;i++) iFuegeAn(i);
for(int i=0;i<anzahl;i++)
{
int z= (int) (Math.random()*(anzahl-i));
iTausche(z,anzahl - i -1);
}
}
public void darstellen()
{
anzahl=iLies(eingabe1);
for(int i=0;i<anzahl;i++) plott (i,iLiesListe(i),vordergrund);
}
protected void starten()
{
}
}
-
05.04.04 20:39 #4
Ich kann in der Klasse Sortierverfahren einen Konstruktoraufruf mit 3 Argumenten finden, aber in Klasse KMaske1 nur einen Konstruktor mit 2 Argumenten in der Signatur.
Sortierverfahren(Applet a,String ue)
{
super(a,ue,"Visualisierung von Sortierverfahren"); // Hier werden drei Argumente übergeben
}
KMaske1 (Applet a,String ue) //Erwartet nur zwei Argumente
{
super( a,ue,"Anzahl");
}
Probier' mal, ob es daran liegt.
-
Java ist zwar nicht grad meine Domäne, aber so weit ich weiß gibt es in Java keine Mehrfachvererbung in dem Sinne (wie beispielsweise in C++). Eine Klasse kann nur immer von einer übergeordneten Klasse vererbt werden. Du könntest höchstens mit Interfaces arbeiten.
Siehe auch hier:
http://www.fh-wedel.de/~si/vorlesung...vererbung.html„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
06.04.04 00:50 #6
Du hast natürlich recht, Matthias. Eine Mehrfachvererbung im Sinne von C++ gibt es bei Java nicht. Das Schlüsselwort 'SUPER' spricht nur die vererbende Klasse an. Und das macht auch Sinn. Anderenfalls würde jede Klasse, die den SUPER-Konstruktor aufruft, die Klasse 'object' ansprechen...
-
Hm..... also am Konstruktor liegt es anscheinend nicht,die Konstruktoren sind übrigens in KMaske0 definiert.... (Sortierverfahren erbt aus KMaske1 erbt aus KMaske0)
Wie bekomme ich das hin, dass Sortierverfahren ein Interface ist. bzw wie lautet die Syntax für Interfaces?(Sorry.... überhaupt keine Ahnung von..)
P.s. Ich bekomme folgenden Fehler, wenn ich im Konstruktor zwei Werte übergeben lasse: Sortierverfahren.java:20:'class' or 'interface' expected
-
Jein. Wenn in KMaske0 ein Konstruktor mit 3 Parametern vorhanden ist, muss in den von KMaske0 abgeleiteten Klassen ebenfalls ein Konstruktor mit 3 Parametern vorhanden sein. Notfalls einfachOriginal geschrieben von kittie
Hm..... also am Konstruktor liegt es anscheinend nicht,die Konstruktoren sind übrigens in KMaske0 definiert.... (Sortierverfahren erbt aus KMaske1 erbt aus KMaske0)
KMaske1(p1, p2, p3)
{
super(p1, p2, p3);
}
und gut is.
Schnapp Dir ein Buch dazu.Wie bekomme ich das hin, dass Sortierverfahren ein Interface ist. bzw wie lautet die Syntax für Interfaces?(Sorry.... überhaupt keine Ahnung von..)
Nur kurz: Ein Interface ist eine eigene Klasse. In ihr werden lediglich Methoden definiert (nicht implementiert!), die alle Klassen implementieren müssen, die dieses Interface benutzen wollen. Also wenn Du ein Interface MyInterface angelegt hast:
public interface MyInterface
{
public void blaBlubChanged(BlaBlubEvent evt);
}
Dann kann ich in meiner Klasse das Interface so einbauen:
class MyClass implements MyInterface
{
...
public void blaBlubChanged(BlaBlubEvent evt)
{ // hier tue ich was ich für richtig halte, z.B.
System.out.println("Hallo Welt");
}
}
Meistens werden Interfaces als Listener benutzt, aber das jetzt hier zu erklären ginge echt zu weit...
Ähnliche Themen
-
Eigene Annotations auslesen von nachgeladenen Klassen
Von Tilian im Forum JavaAntworten: 1Letzter Beitrag: 08.07.10, 15:05 -
Mehrfachvererbung (mehrere Klassen um ein bestimmtes Attribut erweitern)
Von cocoon im Forum JavaAntworten: 4Letzter Beitrag: 21.07.09, 20:58 -
Eigene Klassen im JDK...
Von Jellysheep im Forum JavaAntworten: 6Letzter Beitrag: 26.02.09, 20:32 -
Klassen: Eigene klasse neu Initialisieren und zurückgeben - Aber wie?
Von MC Breit im Forum PHPAntworten: 2Letzter Beitrag: 25.11.04, 15:46 -
ASP.net - Eigene Klassen definieren
Von Private im Forum .NET ArchivAntworten: 10Letzter Beitrag: 02.02.04, 22:48





Zitieren

Login





