![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
hi, ich wollte mal wissen was genau abstrakte Methoden sind; soviel ich weiß sind das doch Methoden, die keinerlei Programmcode enthalten sondern einfach nur deffiniert wurden und die man erst durch eine Vererbung erweitern kann (z.B. interfaces). Das macht aber in meinen Augen keinen Sinn. Warum sollte ich eine Methode als abstract deklarieren, da kann ich sie doch genauso gut gleich komplett deffinieren ... |
|
| | Nach oben #2 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
Hi Zitat:
Also eine abstrakte Methode ist z.B. das hier PHP-Code: Das ist das gleiche Prinzip wie bei Interfaces. In Interfaces werden auch nur die Methoden definiert, welche dann in den implementierenden Klassen ausformuliert werden müssen. Der Sinn ist der, dass man eine Schnittstelle anbieten kann, welche Grundfunktionalitäten enthält, aber weiterhin Methoden zur Verfügung stellt, welche je nach erbender Klasse unterschiedlich implementiert sind. Beispiel: PHP-Code: PHP-Code: PHP-Code: PHP-Code: Grüße Ben. | |
| | |
| | Nach oben #3 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 433
|
Nehmen wir an, Du baust eine Klasse Auto. Das eine ist ein Einspritzer und das andere nicht. Dann hast Du verschiedene Arten, wie die Zündung funktioniert - ein großer Teil bleibt aber gleich. Also implementierst Du alles aus, bis auf z.B. die Zündung. Diese Methode braucht aber jedes Auto. Also sagst Du nur, dass wenn jemand ein Auto bauen möchte (und entsprechend von Deiner Klasse erbt), die Leute sich selbst um die Zündung kümmern müssen - weil es halt verschiedene Arten gibt. Ich hoffe, das ist einigermaßen erklärend.
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #4 |
| Benutzer Registriert seit: 30.11.2004
Beiträge: 97
|
Dann will ich hier auch noch gleich 'n Beispiel in die Rund werfen: Stellen wir uns vor, du hast (um zum klassischen Beispiel zu kommen) eine Klasse Person, und von der abgeleitet gibt es dann die Klassen Student und Professor. Das funktioniert auch ganz toll. Nun soll ein Student und ein Professor auch in der Datenbank gespeichert werden. ist ja kein Problem, da bekommt jede Klasse eine Methode save(), die das erledigt. Nach Jahren kommt dann noch eine Klasse Putzfrau dazu ... und dort wird vergessen, diese Methode reinzuschreiben. Schon gibt es zur Laufzeit Fehler, da ja die Klassen mittels Refelxion instanziiert werden (deshalb wird der Kompiler auch nicht meckern!). ... ich weiß was du jetzt denkst ... "Dafür gibt es doch Interfaces ..." ... eigentlich hast du Recht ... aber deine abstracte Klasse hat ja noch mehr Vorteile: Nun haben wir noch das Problem, dass JEDE Unterklasse von Person in der Methode save() fast das gleiche macht: Connection holen, das Insert machen, wenn alle OK dann commiten und im Fehlerfall ein Rollback. Wäre doch schön, wenn wir das an EINER Stelle machen könnten ... und an da kommt unsere abstracte Klasse Person ins Spiel ! PHP-Code: Einen weiteren Vorteil bringen abstracte methoden hintenrum noch mit. Da ja, sobald eine Methode abstract ist, die ganze Klasse abstract sein muss, kann man von dieser Klasse keine Instanz erzeugen. Klingt vielleicht doof, aber ist (meistens) genau das, was man haben will. Was würde dir ein Objekt der Klasse Person nützen ... NIX ... gar NIX ... entweder ist's ein Student, ein Prof oder 'ne Putzfrau. So stellst du sicher, dass jemand, der deine Klassen benutzt, auch keinen Sch... damit macht. Wenn du noch mehr Erklärungen brauchst, dann meld dich einfach !! Michael |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| OOP: Abstrakte Klasse | ljungi | PHP-Programmierung | 9 | 10.05.2006 22:44 |
| Methoden via String aufrufen | Xean | Allgemeine Java-Programmierung | 6 | 13.03.2006 19:48 |
| Überladung von Methoden in PHP. Hä? | Ben | PHP-Programmierung | 4 | 12.03.2006 15:24 |
| Button hat Standard-L&F wenn er außerhalb von Methoden deklariert wird | Corvin | Allgemeine Java-Programmierung | 11 | 17.02.2006 14:55 |
| Native Methoden | Sputnik | Allgemeine Java-Programmierung | 3 | 07.12.2005 16:12 |