abstrakte Klassen, Interfaces

Status
Nicht offen für weitere Antworten.
H

Han

Gast
Hallo......Interfaces sowie abstrakte Klassen können nicht instanziiert werden oder?

mfg,
Hannes
 
B

Beni

Gast
Versuchs doch mal :wink: Nein, die können nicht instanziiert werden.
 

Volker II

Mitglied
was tun wenns der compiler fordert?

Beni hat gesagt.:
Versuchs doch mal :wink: Nein, die können nicht instanziiert werden.

du wirst dir fast denken, was nun folgt (siehe swing)... ;)

Code:
    public void setTabDefaults(boolean _setting) {
        myEditorListener dCEL = new myEditorListener();                  // FEHLER !!!
        
        dTAB.getTableHeader().setEnabled(_setting);
        dTAB.getTableHeader().setResizingAllowed(_setting);
        dTAB.getTableHeader().setReorderingAllowed(_setting);
        dTAB.setDragEnabled(_setting);
        dTAB.setColumnSelectionAllowed(_setting);
        dTAB.setRowSelectionAllowed(_setting);
        
        dTAB.getColumnModel().getColumn( 2).setCellEditor(new DefaultCellEditor(new JTextField()));
        dTAB.getColumnModel().getColumn( 2).getCellEditor().addCellEditorListener(dCEL);
 
        ...
   }

ergibt im NB 5.0 den Fehler, geht nicht wegen instanzieren ist nicht und

Code:
    public void setTabDefaults(boolean _setting) {
        myEditorListener dCEL;
        
        dTAB.getTableHeader().setEnabled(_setting);
        dTAB.getTableHeader().setResizingAllowed(_setting);
        dTAB.getTableHeader().setReorderingAllowed(_setting);
        dTAB.setDragEnabled(_setting);
        dTAB.setColumnSelectionAllowed(_setting);
        dTAB.setRowSelectionAllowed(_setting);
        
        dTAB.getColumnModel().getColumn( 2).setCellEditor(new DefaultCellEditor(new JTextField()));
        dTAB.getColumnModel().getColumn( 2).getCellEditor().addCellEditorListener(dCEL);                  // FEHLER !!!
 
        ...
   }

ergibt variable dCEL might not be initated.


Code:
import javax.swing.event.*;

public abstract class myEditorListener implements java.awt.event.KeyListener, 
 java.awt.event.MouseListener,
 javax.swing.event.CellEditorListener {
    boolean _isDebug = false;
    char      _isDigit    = 0x00;
    int         _isCode   = -1;
            
    public void setDebug(boolean _debug) {
        this._isDebug = _debug;
    }
    
    private void setKeyValues(java.awt.event.KeyEvent evt) {
        this._isDigit  = evt.getKeyChar();
        this._isCode = evt.getKeyCode();
    }

    private boolean getDebug() {
        return this._isDebug;
    }
    
    public void keyTyped(java.awt.event.KeyEvent evt) {
        if (this.getDebug()) {
            System.out.println(evt.getComponent().getClass().toString());
            System.out.println(evt.getKeyChar());
        }
        
        setKeyValues(evt);
     }

    public void mouseReleased(java.awt.event.MouseEvent evt) {
        if (this.getDebug()) {
            System.out.println(evt.getComponent().getClass().toString());
        }
    }
}

und das ist laut NB 5.0 fehlerfrei....

und nun?
 

SnooP

Top Contributor
äh... sollen wir jetzt erst raten wo das problem überhaupt liegt oder kommt noch was? ;) was sollte am letzten laut nb fehlerfreien code problematisch sein? Wo liegt das Problem mit dem not initialized?

zu jeder abstrakten Oberklasse muss man konkrete Klassen ableiten, die man dann wiederum verwenden kann bzw. einem abstrakten Obertyp auch zuweisen kann... eine Klasse myBla... würde ich jedoch von der Namenskonvention her nie abstrakt machen... My (groß übrigens besser) impliziert eigentlich immer eine konkrete Implementierung und nix abstraktes.
 
G

Guest

Gast
SnooP hat gesagt.:
äh... sollen wir jetzt erst raten wo das problem überhaupt liegt oder kommt noch was? ;) was sollte am letzten laut nb fehlerfreien code problematisch sein? Wo liegt das Problem mit dem not initialized?

die abstracte class myDingenskirchen ist ok, aber die verwendung läuft auf den fehler. entweder weil ich sie initialsieren will oder weil sie nicht habe, weil eine abstrakte klasse nicht zu initialsieren geht. es steht also alles, was ich an problem habe im beitrag - es kommt also - zunächst - nichts weiter.
 

Volker II

Mitglied
hups, es geht auch als gast??? was für ein fehler ;)

also NB meckert in jedem fall an der verwendung der abstrakten klasse rum, nicht an der definition derselben.

übrigens, setzte ich:

myEditorListener dCEL = null;

dann funzt zwar der compiler aber ich habe keine funtkionalität....
 

Brainiac

Bekanntes Mitglied
SnooP hat gesagt.:
zu jeder abstrakten Oberklasse muss man konkrete Klassen ableiten, die man dann wiederum verwenden kann bzw. einem abstrakten Obertyp auch zuweisen kann... eine Klasse myBla... würde ich jedoch von der Namenskonvention her nie abstrakt machen... My (groß übrigens besser) impliziert eigentlich immer eine konkrete Implementierung und nix abstraktes.

Du mußt also von Deiner abstracten Klasse eine weiter ableiten. Diese kannst Du dann benutzen. Sollte eigentlich logisch sein, da das Konzept des abstracten das so vorraussetzt. Wenn Du keine weiter Klasse ableiten willst, mach halt die benutzte Klasse nicht abstrakt.

Die Idee hinter abstrakt ist eine gewisse Struktur vorzugeben die abgeleitete Klassen haben müssen, die selber aber noch nciht aussreichend ist um sie konkret zu benutzen. Bsp.: AbstractButton
 

Volker II

Mitglied
mhh, geschrieben umgesetzt compiler error...

Brainiac hat gesagt.:
Du mußt also von Deiner abstracten Klasse eine weiter ableiten. Diese kannst Du dann benutzen. Sollte eigentlich logisch sein, da das Konzept des abstracten das so vorraussetzt. Wenn Du keine weiter Klasse ableiten willst, mach halt die benutzte Klasse nicht abstrakt.

Die Idee hinter abstrakt ist eine gewisse Struktur vorzugeben die abgeleitete Klassen haben müssen, die selber aber noch nciht aussreichend ist um sie konkret zu benutzen. Bsp.: AbstractButton

Code:
/**
 *
 * @author vjahns
 */
public class myEditorListener extends A_editorListener {
    
    /** Creates a new instance of myEditorListener */
    public myEditorListener() {
    }
    
}

Code:
public abstract class A_editorListener implements java.awt.event.KeyListener, 
 java.awt.event.MouseListener, 
 javax.swing.event.CellEditorListener {
    boolean _isDebug = false;
    char    _isDigit = 0x00;
    int     _isCode  = -1;
    
    
    public void setDebug(boolean _debug) {
        this._isDebug = _debug;
    }
    
    private void setKeyValues(java.awt.event.KeyEvent evt) {
        this._isDigit = evt.getKeyChar();
        this._isCode  = evt.getKeyCode();
    }

    private boolean getDebug() {
        return this._isDebug;
    }
    
    public void keyTyped(java.awt.event.KeyEvent evt) {
        if (this.getDebug()) {
            System.out.println(evt.getComponent().getClass().toString());
            System.out.println(evt.getKeyChar());
        }
        
        setKeyValues(evt);
     }

    public void mouseClicked(java.awt.event.MouseEvent evt) {
        if (this.getDebug()) {
            System.out.println(evt.getComponent().getClass().toString());
        }
    }

    public void mousePressed(java.awt.event.MouseEvent evt) {
        if (this.getDebug()) {
            System.out.println(evt.getComponent().getClass().toString());
        }
    }

    public void mouseReleased(java.awt.event.MouseEvent evt) {
        if (this.getDebug()) {
            System.out.println(evt.getComponent().getClass().toString());
        }
    }
}

und der compiler meint:

Code:
init:
deps-jar:
Compiling 1 source file to ....\JavaSource\javaTAS\build\classes
....\JavaSource\javaTAS\src\myEditorListener.java:14: myEditorListener is not abstract
and does not override abstract method 
keyReleased(java.awt.event.KeyEvent) in java.awt.event.KeyListener
public class myEditorListener extends A_editorListener {
1 error
BUILD FAILED (total time: 0 seconds)

iund nun?

Ist mindestens eine Methode abstrakt, so ist es automatisch die ganze Klasse. Deshalb müssen wir das Schlüsselwort abstract ausdrücklich vor den Klassennamen schreiben. Vergessen wir das Schlüsselwort abstract bei einer solchen Klasse, erhalten wir einen Compilerfehler.

erzählt uns JAVA ist auch eine Insel von CH. Ullenboom...

alles klar, bloss wie binde ich dann KeyEvent-, MouseEvent- und CellEditorListener in meine Klasse ein ohne dass dies dann abstract werden muss, weil ich die "internen" abstracten Klassen nicht überschreiben will???

Also müssen sämtliche abstrakten Methoden überschrieben werden, damit der Compiler zufrieden ist....
 

SnooP

Top Contributor
Also müssen sämtliche abstrakten Methoden überschrieben werden, damit der Compiler zufrieden ist....
Exakt so... - entweder du überschreibst alle abstrakten Methoden (zumindest nen Methodenrumpf muss da sein) oder aber du benutzt die entsprechenden Adapterklassen die Java auch schon mitgibt... KeyAdapter, MouseAdapter etc. - dort brauchst du nur die Methoden zu überschreiben, die du wirklich benötigst...
 

Volker II

Mitglied
siehste, der Affe lernt,

SnooP hat gesagt.:
Exakt so... - entweder du überschreibst alle abstrakten Methoden (zumindest nen Methodenrumpf muss da sein) oder aber du benutzt die entsprechenden Adapterklassen die Java auch schon mitgibt... KeyAdapter, MouseAdapter etc. - dort brauchst du nur die Methoden zu überschreiben, die du wirklich benötigst...

selbst wenn er vor ca 20 Jahren COBOL und Assembler gelernt und noch per Lochkarte umgesetzt hatte... :cool:

Jetzt verliere noch einen Absatz über die Adapterklassen (Nutzung und Definition), vielleicht entdecke ich da meine Lösung zu einem sehr realen Problem (siehe Swing)....
 

SnooP

Top Contributor
Ich habe mich ja nicht selbst durch mich selbst erklärt? ich hab dir ne quelle gegeben wo man's nachlesen kann...
eine Adapterklasse implementiert das komplette Listener-Interface, also das was bei dir gescheitert ist, weil du halt nicht alle Methoden implementieren wolltest... - die Adapterklasse implementiert alle mit leeren Methodenrümpfen... und warum? ;) ... richtisch - wenn du von dieser klasse ableitest, kannst du diejenigen Methoden überschreiben, die dich interessieren... die anderen Methoden lässt du so wie sie sind... und schwupp ist alles ganz einfach.

Genau so bzw. schöner stehts im von mir geposteten Link...

P.S. das man als Gast posten kann, find ich richtig *g*
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
M abstrakte klassen und interfaces Java Basics - Anfänger-Themen 2
R Interfaces durch abstrakte Klassen ersetzbar? Java Basics - Anfänger-Themen 8
A Abstrakte Klassen und Interfaces Java Basics - Anfänger-Themen 11
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
D Abstrakte Klassen Verständniss Frage Java Basics - Anfänger-Themen 4
B Abstrakte Klassen Java Basics - Anfänger-Themen 7
S Abstrakte Klassen Java Basics - Anfänger-Themen 2
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
G Abstrakte Klassen - theoretische Frage Java Basics - Anfänger-Themen 2
OnDemand Abstrakte Klassen Java Basics - Anfänger-Themen 4
T OOP Abstrakte Klassen und ihre Kinder: wie läuft das? Java Basics - Anfänger-Themen 3
M Abstrakte Klassen Java Basics - Anfänger-Themen 2
M Interface und Abstrakte Klassen Java Basics - Anfänger-Themen 12
R Namenskonvention abstrakte Klassen Java Basics - Anfänger-Themen 6
C OOP Objektstruktur: abstrakte Klassen Java Basics - Anfänger-Themen 3
T OOP abstrakte klassen - methoden Java Basics - Anfänger-Themen 8
M Abstrakte Klassen Java Basics - Anfänger-Themen 21
T Abstrakte Klassen Java Basics - Anfänger-Themen 6
C abstrakte Klassen mögen mich nicht... Java Basics - Anfänger-Themen 2
I Abstrakte Klassen Java Basics - Anfänger-Themen 8
D Zusammenfassung von Klassen (Vererbung? Abstrakte Klass? ...?) Java Basics - Anfänger-Themen 8
G Abstrakte Klassen und Methoden Java Basics - Anfänger-Themen 3
C Schnittstellen und Abstrakte Klassen Java Basics - Anfänger-Themen 3
I Abstrakte Klassen Java Basics - Anfänger-Themen 22
G Abstrakte Klassen ? Java Basics - Anfänger-Themen 9
nadoria abstrakte Klassen Java Basics - Anfänger-Themen 6
M Unterscheid Abstrakte Klassen/Interface Klassen? Java Basics - Anfänger-Themen 7
T abstrakte Klassen? Java Basics - Anfänger-Themen 2
M abstrakte klassen / Schnittstellen Java Basics - Anfänger-Themen 4
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
G Java Abstrakte Methoden Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
D Abstrakte Klasse, Konstruktorkette, Attribute setzen Java Basics - Anfänger-Themen 12
L Abstrakte Typen und Schnittstellen Java Basics - Anfänger-Themen 19
S Abstrakte Methode nutzen Java Basics - Anfänger-Themen 9
J abstrakte Methode in Klasse mit Rückgabetyp der abgeleiteten Klasse Java Basics - Anfänger-Themen 5
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
T Übungsaufgabe abstrakte Klasse Java Basics - Anfänger-Themen 21
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Datentypen Abstrakte Datentypen Java Basics - Anfänger-Themen 0
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
K Abstrakte Klasse: vererbte Klasse; instance of? Java Basics - Anfänger-Themen 26
A Abstrakte Datentypen - Methode delete Java Basics - Anfänger-Themen 6
N Vererbung Abstrakte Klasse stateful Java Basics - Anfänger-Themen 3
D Methoden Abstrakte Methoden Java Basics - Anfänger-Themen 3
W Abstrakte Klasse mit Variable? Java Basics - Anfänger-Themen 2
C Abstrakte und virtuelle Methoden in Java Java Basics - Anfänger-Themen 4
E verdeckte abstrakte Methode sinnvoll? Java Basics - Anfänger-Themen 7
A Vererbung Abstrakte Klasse mit Methode die Objekte der Subklassen benutzt? Java Basics - Anfänger-Themen 7
W Abstrakte und konkrete Klasse Java Basics - Anfänger-Themen 4
F Abstrakte Klasse doch zum "Teil" instanzieren? Java Basics - Anfänger-Themen 4
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
N Datentypen abstrakte Klasse wird instanziert Java Basics - Anfänger-Themen 3
D Methoden abstrakte Methoden und Rückgabewerte Java Basics - Anfänger-Themen 2
B Abstrakte Methode vs. Interface Java Basics - Anfänger-Themen 2
propra Interface - abstrakte Klasse Java Basics - Anfänger-Themen 18
N Abstrakte Klasse Java Basics - Anfänger-Themen 28
L Über abstrakte Klasse auf eine Klasse zugreifen? Java Basics - Anfänger-Themen 6
V Vererbung Abstrakte Methode Java Basics - Anfänger-Themen 3
J Welchen Sinn haben abstrakte Methoden? Java Basics - Anfänger-Themen 4
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
StupidAttack Abstrakte Methoden in nicht-abstrakter Methode in abstrakter Klasse Java Basics - Anfänger-Themen 6
T Abstrakte Klasse Java Basics - Anfänger-Themen 3
S Abstrakte Klasse Java Basics - Anfänger-Themen 5
T OO, Konstruktor, abstrakte Methoden Java Basics - Anfänger-Themen 13
K Abstrakte Klasse vs. Interface Java Basics - Anfänger-Themen 21
K Abstrakte Klasse bilden? Java Basics - Anfänger-Themen 11
S Abstrakte Klasse, festlegen, dass Methode verändert werden muss. Java Basics - Anfänger-Themen 4
H Warum Java? | Abstrakte Klasse = Modul? Java Basics - Anfänger-Themen 20
J abstrakte klasse und methode super Java Basics - Anfänger-Themen 2
H Eine Abstrakte Klasse muss. Java Basics - Anfänger-Themen 7
G Abstrakte Klasse "Point" Java Basics - Anfänger-Themen 2
G Abstrakte Methode in gleicher Klasse aufrufen Java Basics - Anfänger-Themen 5
M abstrakte Klasse Java Basics - Anfänger-Themen 3
F Abstrakte Klasse: Konstruktor vs init() Java Basics - Anfänger-Themen 13
G Abstrakte Klasse (was passiert hier) Java Basics - Anfänger-Themen 3
G Interface oder Abstrakte Klasse? Java Basics - Anfänger-Themen 3
G konkretes beispiel: interface hier besser als abstrakte kl. Java Basics - Anfänger-Themen 4
Acha Unterschied Interface - abstrakte Klasse Java Basics - Anfänger-Themen 4
B OOP: abstrakte klasse implementiert interface Java Basics - Anfänger-Themen 3
L abstrakte Methode nicht implementiert! Java Basics - Anfänger-Themen 5
D Abstrakte Klasse Graphics Java Basics - Anfänger-Themen 3
A Abstrakte Klasse Java Basics - Anfänger-Themen 3
G abstrakte klasse Java Basics - Anfänger-Themen 6
F Abstrakte Klasse Baum Java Basics - Anfänger-Themen 6
A Eine abstrakte Methode static machen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben