AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Was sind Interfaces und wie wendet man sie an? (brauche tut)
Thema durchsuchen
Ansicht
Themen-Optionen

Was sind Interfaces und wie wendet man sie an? (brauche tut)

Ein Thema von implementation · begonnen am 28. Sep 2008 · letzter Beitrag vom 27. Mai 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Was sind Interfaces und wie wendet man sie an? (brauche tut)

  Alt 27. Mai 2014, 07:16
Ein entschiedener Unterschied ist, dass eine Klasse mehrere Interfaces implementieren kann, aber nicht von mehreren Klassen erben kann.

Das funktioniert nicht
Delphi-Quellcode:
type
  TEsel = class abstract
  end;

  THund = class abstract
  end;

  TKatze = class abstract
  end;

  THahn = class abstract
  end;

  TBremerStadtmusikanten = class( TEsel, THund, TKatze, THahn ) // das geht nicht!
  end;
aber mit Interfaces geht es
Delphi-Quellcode:
type
  IEsel = interface
  end;

  IHund = interface
  end;

  IKatze = interface
  end;

  IHahn = interface
  end;

  TBremerStadtmusikanten = class( TInterfacedObject, IEsel, IHund, IKatze, IHahn )
  end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Was sind Interfaces und wie wendet man sie an? (brauche tut)

  Alt 27. Mai 2014, 07:26
Zitat:
Das schafft man auch mit einer abstrakten Basisklasse.
Aber dann könnte eine Klasse nur eine Aufgabe erfüllen/Rolle. Bei Interfaces beliebig viele.
Zitat:
Du kannst eine Klasse unsichtbar machen, sodass Sie nie direkt instantiiert werden kann.
Das mit dem nicht instantiieren gilt auch in vielen anderen Sprachen für abstrakte Klassen ( in Delphi nur in neueren Versionen; in Delphi sind nur Methoden abstrakt).
Aber ich verstehe nicht, was du mit unsichtbar meinst.

Zitat:
Das geht -glaube ich- so nicht in Delphi. Es gibt keinen Zugriffsmodifizierer (private, protected, public) auf Typebene. Leider.
Innerhalb eine Klasse schon. Und wenn du einen Typ im Implementation-Teil deklarierst ist er auch nur in der Unit sichtbar.
Standardmässig gelten die Modifizierer aber nicht innerhalb der Unit, höchstens du deklarierst sie als strict.
Markus Kinzler
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Was sind Interfaces und wie wendet man sie an? (brauche tut)

  Alt 27. Mai 2014, 07:39
Die Idee dahinter ist, das viele unterschiedliche Klassen das gleiche Interface implementieren können.
Das schafft man auch mit einer abstrakten Basisklasse.
nur wenn alle Klassen von der abstrakten Basisklasse abgeleitet werden können. Wenn nicht, dann wirfst Du entweder OOP-Prinzipien über Bord oder machst Dein Klassenmodell künstlich komplexer als es sein muss. Und das sehe ich als großen Vorteil von Interfaces an: Ich kann gleiches Verhalten in unterschiedliche KLassen bzw. Klassenmodelle "injizieren", ohne dass diese voneinander wissen müssen. Und damit kannst Du dann Code wirklich wieder verwenden...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz