{"id":1627,"date":"2012-12-23T11:03:22","date_gmt":"2012-12-23T09:03:22","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1627"},"modified":"2012-12-23T11:03:22","modified_gmt":"2012-12-23T09:03:22","slug":"default-methoden-aus-speziellen-oberschnittstellen-ansprechen","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2012\/12\/default-methoden-aus-speziellen-oberschnittstellen-ansprechen\/","title":{"rendered":"Default-Methoden aus speziellen Oberschnittstellen ansprechen"},"content":{"rendered":"<p>Eine Unterklasse kann eine konkrete Methode der Oberklasse \u00fcberschreiben, aber dennoch auf die Implementierung der \u00fcberschriebenen Methode zugreifen. Allerdings muss der Aufruf \u00fcber super erfolgen, da sich sonst ein Methodenaufruf rekursiv verf\u00e4ngt.<\/p>\n<p>Default-Methoden k\u00f6nnen andere Default-Methoden aus Oberschnittstellen ebenfalls \u00fcberschreiben und mit neuem Verhalten implementieren. Doch genauso wie normale Methoden k\u00f6nnen sie mit super auf Default-Verhalten aus dem \u00fcbergeordneten Typ zur\u00fcckgreifen.<\/p>\n<p>Nehmen wir f\u00fcr ein Beispiel wieder zwei erweiterte Schnittstelle Prices und Buyable an:<\/p>\n<p>interface Priced {<\/p>\n<p>double price();<\/p>\n<p>default boolean hasPrice() { return price() &gt; 0; }<\/p>\n<p>}<\/p>\n<p>interface Buyable extends Priced {<\/p>\n<p>@Override double price();<\/p>\n<p>@Override default boolean hasPrice() { return <b>Priced.super.hasPrice()<\/b> || price() == 0; }<\/p>\n<p>}<\/p>\n<p>In der Schnittstelle Priced sagt der Default-Code von hasPrice() aus, dass alles einen Preis hat, was echt \u00fcber 0 liegt. Buyable dagegen nutzt eine andere Definition und implementiert daher das Default-Verhalten neu. Denn Buyable definiert hasPrice() so, dass auch ein Preis von 0 letztendlich bedeutet, dass es einen Preis hat. In der Implementierung von hasPrice() greift Buyable auf den Default-Code von Priced zur\u00fcck, um vom Obertyp eine Entscheidung \u00fcber die Preiseigenschaft zu bekommen, die aber mit der Oder-Verkn\u00fcpfung noch verallgemeinert wird.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine Unterklasse kann eine konkrete Methode der Oberklasse \u00fcberschreiben, aber dennoch auf die Implementierung der \u00fcberschriebenen Methode zugreifen. Allerdings muss der Aufruf \u00fcber super erfolgen, da sich sonst ein Methodenaufruf rekursiv verf\u00e4ngt. Default-Methoden k\u00f6nnen andere Default-Methoden aus Oberschnittstellen ebenfalls \u00fcberschreiben und mit neuem Verhalten implementieren. Doch genauso wie normale Methoden k\u00f6nnen sie mit super auf [&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,66],"tags":[],"class_list":["post-1627","post","type-post","status-publish","format-standard","hentry","category-insel","category-java-8"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1627","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=1627"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1627\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1627"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1627"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}