Normal
Beides. Der deklarierte Typ bestimmt die Methoden, die zur compile time aufrufbar sind. Der Typ zur runtime bestimmt, welche Methode tatsächlich aufgrufen wird.