Unterschied zwischen Abstract und Interface
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abstract
bauplan
beispiel
code
funktioniert code
gut url
http
implementierung
instanz
interface
klasse test
kombinieren
lieber interfaces
objekt
richtiger grund
richtlinie
spezialfall
test
tun
url
-
Heyhoooo
Was ist der unterschied zwischen Abstract und Interface? Ich ralls irgendwie nicht, das ist doch eigentlich das selbe in grün. Ich arbeite bisher nur mit abstract, mir wurde aber gesagt ich sollte lieber interfaces benutzen, aber kein richtiger Grund genannt. Doch was ist jetzt richtig? Was für welchen Spezialfall? Google gibt hier leider nicht soo den wahren aufschluss, darum frag ich mal hier.
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich denke, das hier erklärt es ganz gut:
http://www.codeproject.com/KB/cs/abstractsvsinterfaces.aspx -
Das Eine hat mit dem Anderen nichts zu tun.
abstract
Von einer "abtrakte" Klasse kann man keine Objekte erzeugen, sondern nur Kindklassen:
abstract class Test { ... } var meinObjekt = new Test; // geht nicht.
Von einer abstrakten Klasse muss also ein Kindklasse erstellt werden:
abstract class Test { ... } class TestKind extends Test { ... } var meinObjekt = new TestKind; // funktioniert
Interface:
Ein Interface ist ein "Bauplan" einer Klasse. Das Interface beschreibt wie die Klasse auszusehen hat und muss(!) sich danach richten:
interface Test { private function erste_methode(); private function zweite_methode($test); }
beschreibt zum Beispiel, dass "erste_methode()" und "zweite_methode()" in der Klasse Test existieren muss.
/Edit:
Verwendungszweck:
Ein Interface verwendest du, wenn du Beschreiben willst, wie eine Klasse auszusehen hat. Zum Beispiel als "Richtlinie" für andere Programmierer oder wenn du Probleme ausschließen möchtest oder Funktionen noch nicht implementiert sind.
Eine abstrakte Klasse verwendest du, wenn du verhindern möchtest, dass von der Elternklasse ein Objekt (Instanz) erstellt werden soll. In der Logik könnte es zB je nach Klassenarchitektur unlogisch sein, damit man das nicht vergisst oder keinen Kram programmiert, verhindert man das einfach.
Beitrag zuletzt geändert: 24.8.2011 18:35:23 von trueweb -
Oft wirst du übrigens auch beides kombinieren. Also ein Interface *und* eine abstrakte Klasse welche dieses Interface implementiert definieren. Das Interface wirst du dann in deinen Schnittstellen nutzen, während die abstrakte Klasse eine sinnvolle Default-Implementierung abgibt.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage