title image


Smiley Re: Grundbegriffe...???
Ich versuch's mal:



Metaklassen:

Hab ich bisher noch nichts von gehört, aber ich schätze folgendes ist gemeint: Ein Käfer ist ein VW, der wiederum ist ein Auto und das Auto ist ein Fahrzeug. Man könnte das ganze also so umsetzen, daß man die Klassen Fahrzeug, Auto, VW und Kaefer schreibt, wobei Kaefer von VW erbt, VW von Auto und Auto von Fahrzeug. Dann wäre VW die Oberklasse von Kaefer und Fahrzeug wahrscheinlich eine Metaklasse von Kaefer. Ist aber nur ne Schätzung.



Abstrakte Klassen:

Das sind Klassen, die Methoden beinhalten, die noch nicht ausformuliert sind. Im Beispiel könnte Fahrzeug z.B. eine abstrakte Klasse sein, wenn man z.B. die Methode wechsleDieReifen() hineinschreibt, aber diese abstrakt formuliert. Damit stellt man sicher, daß jede Klasse, die sich von Fahrzeug ableitet diese Methode besitzt. Allerdings kann man sie in Fahrzeug noch nicht ausformulieren, weil man nicht weiß, wie so ein Reifenwechsel vor sich geht. Bei einem Motorrad sind dafür ganz andere Schritte notwendig, als bei einem Auto.



Polymorphismus:

Das hat was mit Überladen von Methoden zu tun. Stellen wir uns vor wir hätten die o.g. Klassen tatsächlich geschrieben und für den Kaefer die Methode wechsleDieReifen() überladen (heißt in der Klasse Kaefer ausformuliert).

Wir rufen nun irgendeine Methode x(Fahrzeug f) auf, die als Parameter ein Fahrzeug haben möchte. Dieser übergeben wir eine Referenz auf ein Kaefer-Objekt. x() weiß ja nicht, daß es ein Kaefer ist, kann aber die Methode wechsleDieReifen() aufrufen, weil automatisch die Methode aufgerufen wird, die wir in Kaefer formuliert haben.

Ein anderes Beispiel waere eine Klasse Vieleck mit der Methode berechneFlaecheninhalt(). Bei einem Vieleck ist das recht kompliziert und dauert ein wenig. Nun haben wir noch eine Klasse Quadrat, die sich von Vieleck ableitet und in dieser schreiben wir die Methode berechneFlaecheninhalt() neu (weil das bei einem Quadrat eben schneller und einfacher berechnet werden kan). Wenn nun ein Objekt der Klasse Quadrat wieder in ein Vieleck gecastet wird und dann die Methode berechneFlaecheninhalt() aufgerufen wird, welche der beiden Methoden wird dann aufgerufen? Man könnte meinen die Methode von Vieleck, aber dank Polymorphismus wird direkt die Methode der Klasse Quadrat aufgerufen und die Berechnung geht viel schneller.



Ich hofe das war soweit einigermaßen richtig und verständlich ;-)



Gruß,



Jörg

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: