Anzeige:
Ergebnis 1 bis 11 von 11

Thema: [JAVA] Was für einen Sinn haben abstrakte Klassen??

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54

    [JAVA] Was für einen Sinn haben abstrakte Klassen??

    Was für einen Sinn haben abstrakte Klassen??

    ich weis das man da nur den Kopf hinschreibt und dann immer wenn man davon eine Subklasse schreibt das man diese dann explizit überschreiben muss. Aber Warum kann man das nicht einfach in einer Hauptklasse definieren und dann diese einfach überschreiben??

    greetz
    Snoop

  2. #2
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Wenn du das Ding nur einmal brauchst, brauchst du tatsächlich keine Abstrakte
    Klasse. In größeren Projekten, in denen du vergleichbares mehrfach brauchst, garantiert das Konsistenz, da Methoden, Parameter und Rückgabewerte definiert sind. Zudem ist die implements-klausel eine Möglichkeit, die fehlende Mehrfachvererbung zu umgehen.
    Das Ziel ist das Ziel.

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Eine abstrakte Klasse in Java bietet dir erstens die Möglichkeiten von Interface, also die Signatur von Methoden festzulegen, sodass dann davon abgeleitete Klassen als diese gemeinsame Basis angesprochen werden können.

    Im Gegensatz zu einem Interface, kann man aber für Methoden bereits Grundimplementationen vorgeben und auch Konstanten und Variablen definieren.

    Im Gegensatz zu einer normalen Klasse, muss zumindest eine Methode abstract sein, also keine Implementation haben, d.h. das von der abtrakten Klasse selbst keine Instanz erzeugt werden kann, sondern immer nur von Subklassen, die alle abtrakten Methoden implementieren.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54
    so wie du das grad geschrieben hast könnte das glatt aus dem buch sein, was ich hier grad lese. ^^

    Aber so richtig hilft mir das nicht weiter.

    Kannst du ein Beispiel liefern und es dabei erklären, wie das funktioniert??

    In dem Buch hier seh ich keinen grossen unterschied zu normalen klassen und deren überschreiben.

    ---
    Snoop

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54
    Der Abschnitt Interfaces kommt erst bei mir im nächsten Kapitel, dazu kann ich jetzt nichts beurteilen. =(

  6. #6
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Zitat Zitat von McSnoop
    so wie du das grad geschrieben hast könnte das glatt aus dem buch sein, was ich hier grad lese. ^^

    In dem Buch hier seh ich keinen grossen unterschied zu normalen klassen und deren überschreiben.
    Bei einer abstrakten Klasse vergisst du nie, eine Methode zu überschreiben.
    Das Ziel ist das Ziel.

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54
    aber theoretisch braucht man die ganzen abtrakten klassen nicht wenn man sich an regeln hält und die Übersicht nicht verliert oder??

  8. #8
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Zitat Zitat von McSnoop
    aber theoretisch braucht man die ganzen abtrakten klassen nicht wenn man sich an regeln hält und die Übersicht nicht verliert oder??
    Jein, denn du kannst eine neue Klasse nur von einer einzelnen ableiten, aber viele andere implementieren. Und es muss ja nicht jede Methodendefinition leer sein.
    'Runnable' ist ein gutes Beispiel dafür. Wenn du eine Klasse von Thread ableitest, kannst du sie nicht von JFrame ableiten. Alternativ kannst du aber eine Klasse von JFrame ableiten und Runnable implementieren. Zwei Methoden
    überschreiben, und schon kannst du die Thread-Funktionalität nutzen.
    Geändert von mwanaheri (21-10-2004 um 16:05 Uhr)
    Das Ziel ist das Ziel.

  9. #9
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54
    jo thx, das werd ich mir anschaun, aber wie weiter oben schon geschrieben worden, ich werde für das was ich machen will erst mal keine akstrakten klassen brauchen. Aber für später ist es bestimmt nicht verkehrt auch das zu beherschen.

    greetz
    Snoop

  10. #10
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von McSnoop
    aber theoretisch braucht man die ganzen abtrakten klassen nicht wenn man sich an regeln hält und die Übersicht nicht verliert oder??
    Das hilft dir nicht wenn du in der Basisklasse nicht alle Sachen implementieren kannst.
    Beispiel "aus dem Lehrbuch" sind da geomentrische Formen.
    Die Basisklasse Form kann bestimmte Methoden nicht implementieren, weil Form ein abstraktes Konzept ist.

    Code:
    abstract public class Form
    {
        abstract public int flaeche(); // hat in Form keine Bedeutung
    }
    Code:
    public class Rechteck extends Form
    {
        private int m_a;
        private int m_b;
    
        public Rechteck(int a, int b)
        {
            m_a = a;
            m_b = b;
        }
    
        // Implementierung der abstrakten API
        public int flaeche()
        {
            return m_a * m_b;
        }
    }
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  11. #11
    Registrierter Benutzer Avatar von Sym
    Registriert seit
    05.09.2002
    Ort
    Bremen
    Beiträge
    278
    jo anda_skoa: Deine Klasse erbt (oder implementiert) da leider gerade garnichts. Hast Du wohl vergessen.
    Denk mal drüber nach...

    Lars

    ACHTUNG: ersetze Linux durch GNU/Linux an den entsprechenden Stellen
    www.macuser.de, MSVC2005 Express und Qt, Qt/Mac installieren

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •