Polymorphism kann durch Überschreiben erreicht werden. Kurz gesagt, Polymorphismus bezieht sich auf die Fähigkeit eines Objekts, abhängig von seiner eigenen Natur unterschiedliche Verhaltensweisen (unterschiedliche Implementierungen) zu bieten. Insbesondere abhängig von seiner Position in der Klassenhierarchie.
Method Overriding ist, wenn eine in einer Oberklasse oder Schnittstelle definierte Methode von einer ihrer Unterklassen neu definiert wird, wodurch das Verhalten der Oberklasse geändert/ersetzt wird. Die Entscheidung, ob eine Implementierung oder eine andere aufgerufen wird, wird dynamisch zur Laufzeit getroffen, abhängig vom Objekt, von dem die Operation aufgerufen wird. Beachten Sie, dass die Signatur der Methode beim Überschreiben unverändert bleibt.
Method Overloading ist nicht mit Polymorphie verwandt. Es bezieht sich auf die Definition verschiedener Formen einer Methode (normalerweise durch den Empfang verschiedener Parameternummern oder -typen). Es kann als statischer Polymorphismus gesehen werden. Die Entscheidung, eine Implementierung oder eine andere aufzurufen, wird zum Codierungszeitpunkt getroffen. Beachten Sie in diesem Fall, dass sich die Signatur der Methode ändern muss.
Operator overloading ein anderes Konzept ist, um Polymorphismus zusammen, die sich auf die Fähigkeit einer bestimmten sprachabhängigen Operator bezieht sich unterschiedlich auf die Art seiner Operanden verhalten Basis (zum Beispiel Verkettung mit String
s und zusätzlich +
könnte bedeuten, mit numerische Operanden).
Die example in Wikipedia ist recht illustrativ.
Die folgenden verwandten Fragen könnte auch nützlich sein:
ist eine Überlastung in keinem Zusammenhang mit Polymorphismus? Überladen ist Kompilierzeit-Polymorphismus. Wobei Überreiten ist Laufzeit-Polymorphismus –