{"id":2975,"date":"2014-11-07T11:48:14","date_gmt":"2014-11-07T09:48:14","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=2975"},"modified":"2014-11-07T11:48:14","modified_gmt":"2014-11-07T09:48:14","slug":"inselupdate-wie-wo-was-dynamisch-binden","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2014\/11\/inselupdate-wie-wo-was-dynamisch-binden\/","title":{"rendered":"Inselupdate: Wie wo was dynamisch binden"},"content":{"rendered":"<p>Es gibt bei Methoden von konkreten Klasse, abstrakte Klassen und Schnittstellen Unterschiede, wo der Aufruf letztendlich landet. Nehmen wir folgende Methode an: <\/p>\n<p>void f( T t ) {<br \/>&nbsp; t.m();<br \/>} <\/p>\n<p>Fordert die Methode ein Argument vom Typ T und ruft auf dem Parameter t die Methode m() auf, so k\u00f6nnen wir folgendes festhalten: <\/p>\n<p>\u00b7 Ist T eine finale Klasse, so wird immer die Methode m() von T aufgerufen, da es keine Unterklassen geben kann, die m() \u00fcberschreiben. <\/p>\n<p>\u00b7 Ist T eine nicht-finale Klasse und m() eine finale Methode, wird genau m() aufgerufen, weil kein Unterklasse m() \u00fcberschreiben kann. <\/p>\n<p>\u00b7 Ist T eine nicht-finale Klasse und m() keine finale Methode, so k\u00f6nnten Unterklassen von T m() \u00fcberschreiben und t.m() w\u00fcrde dann dynamisch die \u00fcberschriebene Methode aufrufen. <\/p>\n<p>\u00b7 Ist T eine abstrakte Klasse und m() eine abstrakte Methode, so wird in jedem Fall eine Realisierung von m() in einer Unterklasse aufgerufen. <\/p>\n<p>\u00b7 Ist T eine Schnittstelle, und m() keine Default-Implementierung, so wird in jedem Fall eine Implementierung m() einer implementierenden Klasse aufgerufen. <\/p>\n<p>\u00b7 Ist T eine Schnittstelle, und m() eine Default-Implementierung, so kann t.m() bei der Default-Implementierung landen, oder bei einer \u00fcberschriebenen Version einer implementierenden Klasse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt bei Methoden von konkreten Klasse, abstrakte Klassen und Schnittstellen Unterschiede, wo der Aufruf letztendlich landet. Nehmen wir folgende Methode an: void f( T t ) {&nbsp; t.m();} Fordert die Methode ein Argument vom Typ T und ruft auf dem Parameter t die Methode m() auf, so k\u00f6nnen wir folgendes festhalten: \u00b7 Ist T [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[],"class_list":["post-2975","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2975","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=2975"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2975\/revisions"}],"predecessor-version":[{"id":2976,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2975\/revisions\/2976"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=2975"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=2975"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=2975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}