package oop.Polymorphism;

public class Polymorphism {
	
	
	/*Was ist das? 
   	 * 
	 * Method Overloading: Schlüsselwort (ohne)
	 * 
	 * Compile-time Polymorphism (Early binding or static binding) (frühe Bindung).
	 * 
	 * 	• Statische Methoden können überladen werden
	 * 	• den selben Namen
	 *  • Parameterlist unterscheiden sich in der Anzahl oder dem type der Parameter
	 *  • innerhalb der selben oder abgeleiteten Klasse
	 *  
	 * Method Overriding: Schlüsselwort (@Override)
	 * 
	 * runtime-time Polymorphism (Late binding or Dynamic Polymorphism) (späte Bindung) 
	 * 
	 *  • Statische Methoden können nicht überschreiben werden
	 *  • geht nur in Kindklasse also nur in Verebung mit (@Override)
	 *  • den selben Namen
	 *  • den selben Rückgabetyp
	 *  • die selbe Parameterliste
	 * 		• aber anderes Verhalten
	 */
	
	/*
	 * Überladung vs. Überschreibung:
	 * 
	 * - Bei Methodenüberladung wählt der Compiler die Methode basierend auf dem besten passenden Parameter-Typ zur Kompilierzeit.
	 * - Bei Methodenüberschreibung entscheidet der Compiler basierend auf der Laufzeit-Instanz, 
	 * 			welche Methode aufgerufen wird. Das bezieht sich jedoch nur auf Methoden mit exakt der gleichen Signatur.
	 */
	

}
