{"id":5615,"date":"2014-03-22T18:39:24","date_gmt":"2014-03-22T17:39:24","guid":{"rendered":"http:\/\/www.iprog.it\/blog\/?p=5615"},"modified":"2014-03-22T18:39:24","modified_gmt":"2014-03-22T17:39:24","slug":"il-poliformismo-java-parte-3","status":"publish","type":"post","link":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/","title":{"rendered":"Il Poliformismo in Java \u2013 Parte 3"},"content":{"rendered":"<p><a href=\"http:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo.jpeg\" rel=\"lightbox[5615]\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-4451\" alt=\"java-logo\" src=\"http:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo-150x150.jpeg\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo-150x150.jpeg 150w, https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo-90x90.jpeg 90w, https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo-48x48.jpeg 48w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p><strong>Poliformismo\u00a0Ad-Hoc: Overloading\u00a0<\/strong><\/p>\n<div title=\"Page 25\">\n<p>Lo stesso nome di metodo pu\u00f2 essere \u201csovraccaricato\u201d per manifestare diversi comportamenti, all&#8217;interno di una classe o catena d&#8217;eredit\u00e0, i\u00a0metodi di cui si fa l\u2019overlaoding devono essere distinguibili per numero e\/o tipi di parametri passati in ingresso, inoltre\u00a0<strong>NON<\/strong> \u00e8 possibile che due metodi differiscano solamente per il tipo restituito.<\/p>\n<p>Esempio<\/p>\n<div title=\"Page 26\">[code lang=&#8221;java&#8221;]&lt;br \/&gt;public class MyClass { public void myMethod()&lt;br \/&gt;&lt;br \/&gt;{ &#8230; } \/\/ YES!!!&lt;br \/&gt; public void myMethod(Object obj)&lt;br \/&gt;&lt;br \/&gt;{ &#8230; } \/\/ YES!!!&lt;br \/&gt; public void myMethod(String s)&lt;br \/&gt;&lt;br \/&gt;{ &#8230; } \/\/ YES!!!&lt;br \/&gt; public void myMethod(Object obj, int v)&lt;br \/&gt;&lt;br \/&gt;{ &#8230; } \/\/ YES!!!&lt;br \/&gt; public int myMethod(Object obj, int v)&lt;br \/&gt;&lt;br \/&gt;{ &#8230; } \/\/ NO!!! }&lt;br \/&gt;[\/code]<\/p>\n<p>Una cosa molto interessante \u00e8 che anche \u00a0i costruttori possono essere \u201csovraccaricati\u201d, per richiamare un costruttore dentro un altro costruttore si usa il costrutto this( ) con i relativi parametri,\u00a0questo meccanismo pu\u00f2 ovviare alla mancanza dei parametri di default<\/p>\n<div title=\"Page 28\">[code lang=&#8221;java&#8221;]&lt;br \/&gt;public class MyClass {&lt;br \/&gt; public void MyClass(int a, int b)&lt;br \/&gt;&lt;br \/&gt;{&#8230; }&lt;br \/&gt; public void MyClass () {&lt;br \/&gt;&lt;br \/&gt;this(0,0) ;&lt;br \/&gt;&lt;br \/&gt;}&lt;br \/&gt;&lt;br \/&gt;}&lt;br \/&gt;[\/code]<\/p>\n<p><strong>Poliformisomo\u00a0Ad-Hoc: Coercion\u00a0<\/strong><\/p>\n<\/div>\n<div title=\"Page 29\">\n<p>La coercion consiste nella conversione, esplicita o implicita, del tipo di un oggetto perch\u00e8 sia possibile il suo utilizzo in contesti definiti in termini di un altro tipo, \u00e8\u00a0\u00a0un&#8217;operazione che potrebbe essere in alcuni casi poco sicura (per errori di conversione).\u00a0Java prevede un meccanismo molto restrittivo di coercion implicita per i tipi primitivi, con possibilit\u00e0 di casting esplicito.<\/p>\n<div title=\"Page 30\">\n<div>\n<div>\n<p>Per i tipi primitivi \u00e8 prevista la conversione implicita verso l&#8217;alto (upcasting), un metodo scritto in termini di double pu\u00f2 essere utilizzato con tutti i tipi primitivi.\u00a0Questo non significa che sempre si conservi tutta l&#8217;informazione!<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><a href=\"http:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2014\/03\/Schermata-2014-03-22-alle-18.22.42.png\" rel=\"lightbox[5615]\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-5616\" alt=\"Schermata 2014-03-22 alle 18.22.42\" src=\"http:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2014\/03\/Schermata-2014-03-22-alle-18.22.42-300x94.png\" width=\"300\" height=\"94\" srcset=\"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2014\/03\/Schermata-2014-03-22-alle-18.22.42-300x94.png 300w, https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2014\/03\/Schermata-2014-03-22-alle-18.22.42-620x195.png 620w, https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2014\/03\/Schermata-2014-03-22-alle-18.22.42.png 869w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Es<\/p>\n<div title=\"Page 31\">[code lang=&#8221;java&#8221;]&lt;br \/&gt;public static void moo(float d){&lt;br \/&gt;System.out.println(d);&lt;br \/&gt;}&lt;br \/&gt;public static void main(String [] args){&lt;br \/&gt;    moo(1);\/\/stampa: 1.0&lt;br \/&gt;    moo(&#8216;c&#8217;);\/\/stampa: 99.0&lt;br \/&gt;    moo(1234567891234578910L); \/\/stampa: 1.23456794E18, diverso!!&lt;br \/&gt;    moo(1.2)\/\/NON COMPILA!!&lt;br \/&gt;}&lt;br \/&gt;[\/code]<\/p>\n<p>Inoltre \u00e8 possibile effettuare il cast esplicito verso il basso tra tipi primitivi, e per gli oggetti lungo la catena d&#8217;eredit\u00e0 o da\/a interfacce, il downcasting pu\u00f2 causare errori in runtime se l&#8217;oggetto non \u00e8 compatibile con la variabile a cui viene assegnato<br \/>\nES<\/p>\n<div title=\"Page 32\">[code lang=&#8221;java&#8221;]&lt;br \/&gt;int i = (int) 5.2;\/\/troncamento&lt;br \/&gt;Object obj = &quot;chutney&quot;;&lt;br \/&gt; String str = (String) obj;\/\/OK&lt;br \/&gt;Object[] objArray = new String[6];&lt;br \/&gt;String[] strArray = (String[])objArray;\/\/OK&lt;br \/&gt; strArray = (String[])new Object[5];\/\/NO!!&lt;br \/&gt;[\/code]<\/p>\n<ul>\n<li>Per quanto riguarda gli operatori predefiniti si ha un misto di coercion e overloading<\/li>\n<li>Gli operatori sono definiti per tutti i tipi primitivi<\/li>\n<li>In presenza di tipi eterogenei, viene applicato applicato l&#8217;operatore del tipo \u201csuperiore\u201d effettuando l&#8217;upcasting sul tipo \u201cinferiore\u201d<\/li>\n<li>L&#8217;operatore +, ridefinito anche per le stringhe, esegue la conversione a stringa se uno dei due operandi \u00e8 una stringa<\/li>\n<li>In presenza di oggetti, la conversione viene fatta richiamando toString sull&#8217;oggetto<\/li>\n<li>Abbiamo detto che a una variabile di un tipo possono essere assegnati oggetti di un sottotipo (sottoclasse o stessa interfaccia)<\/li>\n<li>Il tipo della variabile \u00e8 dunque potenzialmente diverso dal tipo dell&#8217;oggetto contenuto!<\/li>\n<li>Da qui nasce l&#8217;esigenza di meccanismi di risoluzione del tipo (binding)<\/li>\n<li>Se il tipo viene determinato in fase di compilazione (binding statico), il tipo sar\u00e0 necessariamente quello della variabile<\/li>\n<li>Solo in tempo di esecuzione \u00e8 infatti possibile determinare il tipo dell&#8217;oggetto contenuto<\/li>\n<\/ul>\n<div title=\"Page 35\">\n<div>\n<div>\n<p><strong>Binding Statico e Dinamico\u00a0<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div><span style=\"font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px;\"><span style=\"font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px;\">\u00a0<\/span><\/span><\/p>\n<div title=\"Page 35\">\n<p>Il binding statico consiste nella determinazione del tipo di un oggetto in fase di compilazione, basandosi sul tipo della variabile che referenzia l&#8217;oggetto, col \u00a0binding dinamico invece il tipo dell&#8217;oggetto \u00e8 determinato durante l&#8217;esecuzione, la\u00a0presenza del binding dinamico consente di sfruttare il meccanismo di overriding .\u00a0Implementato con una ricerca nella gerarchia di classi, il binding dinamico si paga con un overhead alla chiamata dei metodi.<\/p>\n<div title=\"Page 36\">\n<p>In Java \u00e8 implementato il binding dinamico esclusivamente nella chiamata a metodi d&#8217;istanza, per slot, metodi statici e slot statici si ha invece binding di tipo statico.La sovrascrittura di un metodo d&#8217;istanza dar\u00e0 dunque luogo a overriding dello stesso, la sovrascrittura di uno slot o di un metodo statico d\u00e0 invece luogo a shadowing dello slot\/metodo definito nella superclasse.<\/p>\n<\/div>\n<p><strong>Eredit\u00e0: Overriding\u00a0<\/strong><\/p>\n<div title=\"Page 37\">\n<p>Si ha overriding quando una classe derivata sovrascrive un metodo d&#8217;istanza gi\u00e0 definito lungo la catena d&#8217;eredit\u00e0 (stesso nome, stessi parametri), quando un metodo overridden viene richiamato (anche in altri metodi definiti nella superclasse), viene eseguito il codice relativo al tipo attuale dell&#8217;oggetto o il pi\u00f9 vicino nella catena di eredit\u00e0 verso l&#8217;alto.<\/p>\n<div title=\"Page 38\">\n<p>&nbsp;<\/p>\n<p>[code lang=&#8221;java&#8221;]<br \/>\nclass B {<br \/>\n public void m(){<br \/>\n       System.out.println(&quot;B&quot;);<br \/>\n     }<br \/>\n}<\/p>\n<p>class D extends B{ public void m(){<\/p>\n<p>System.out.println(&quot;D&quot;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>class D1 extends D{<br \/>\n public static void main(String[] args){<\/p>\n<p>B b = new D1();<br \/>\n      b.m();\/\/cosa stampa?<br \/>\n    }<br \/>\n}<br \/>\n[\/code]<\/p>\n<p>&nbsp;<\/p>\n<div title=\"Page 39\">\n<p>Quando si sovrascrive uno slot in Java si ha un effetto un po&#8217; diverso da quello che si ha in caso di overriding infatti lo slot della superclasse continua ad esistere e a far parte dello stato dell&#8217;oggetto.\u00a0\u00c8 possibile accedere allo slot della superclasse attraverso il riferimento super, tutto il codice della superclasse che si riferisce a uno slot continuer\u00e0 a riferirsi \u00a0a quello originale.<\/p>\n<div title=\"Page 39\">\n<p>\u2022 Per sfruttare l&#8217;overriding si pu\u00f2 evitare di riferirsi agli slot direttamente, ma utilizzando degli opportuni metodi (setter e getter)<\/p>\n<div title=\"Page 40\">\n<div>\n<p>&nbsp;<\/p>\n<p>[code lang=&#8221;java&#8221;]<br \/>\nclass B {<\/p>\n<p>char a = &#8216;B&#8217;;<\/p>\n<p>}<\/p>\n<p>class D extends B{<\/p>\n<p>char a = &#8216;D&#8217;<\/p>\n<p>}<\/p>\n<p>class D1 extends D{<br \/>\n public static void main(String[] args){<\/p>\n<p>B b = new D1();<br \/>\n      System.out.println(b.a);\/\/cosa stampa?<br \/>\n    }<br \/>\n}<br \/>\n[\/code]<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<div><strong>Metodo\u00a0Dispatching\u00a0<\/strong><\/div>\n<div>\n<div title=\"Page 41\">\n<p>Java, come la maggioranza dei linguaggi a oggetti, implementa il dispatching singolo: i metodi appartengono agli oggetti su cui vengono chiamati, \u00e8\u00a0scelto il metodo pi\u00f9 \u201cvicino\u201d appartenente alla classe, risalendo la catena d&#8217;eredit\u00e0 in base al numero e\/o al tipo del\/i parametro\/i di ingresso, l&#8217;oggetto \u00e8 determinato dinamicamente grazie al binding dinamico, i parametri sono invece determinati staticamente, in caso di overloading all&#8217;interno della catena d&#8217;eredit\u00e0 si potrebbero avere situazioni non chiarissime!<\/p>\n<div title=\"Page 42\">\n<div><\/div>\n<p>[code lang=&#8221;java&#8221;]<br \/>\n&lt;div&gt;<br \/>\n&lt;div title=&quot;Page 42&quot;&gt;<br \/>\n&lt;div&gt;<br \/>\n&lt;div&gt;<\/p>\n<p>public class ProvaDispatching{ class A {<\/p>\n<p>public void m(DDD d){<br \/>\nSystem.out.println(&quot;eDDD&quot;);<\/p>\n<p>}<\/p>\n<p>public void m(D d){<br \/>\nSystem.out.println(&quot;eD&quot;);<\/p>\n<p>&lt;\/div&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;div&gt;<\/p>\n<p>\u00a0 \u00a0}<\/p>\n<p>}<br \/>\n&lt;div title=&quot;Page 42&quot;&gt;<\/p>\n<p>class AA extends A{<\/p>\n<p>public void m(DD d){<br \/>\n&lt;pre&gt; System.out.println(&quot;eDD&quot;);<br \/>\n  }<br \/>\n}&lt;\/pre&gt;<br \/>\n&lt;div title=&quot;Page 42&quot;&gt;<\/p>\n<p>class D {} class DD extends D{} class DDD extends DD{}<br \/>\n&lt;div title=&quot;Page 42&quot;&gt;<br \/>\n&lt;pre&gt;public static void main(String [] args){<br \/>\n    A a = new AA();<br \/>\n    D d = new DD();<br \/>\n    a.m(d); \/\/stampa: eD<br \/>\n   }<br \/>\n}&lt;\/pre&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/div&gt;<br \/>\n[\/code]<\/p>\n<div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Poliformismo\u00a0Ad-Hoc: Overloading\u00a0 Lo stesso nome di metodo pu\u00f2 essere \u201csovraccaricato\u201d per manifestare diversi comportamenti, all&#8217;interno di una classe o catena d&#8217;eredit\u00e0, i\u00a0metodi di cui si fa l\u2019overlaoding devono essere distinguibili per numero e\/o tipi di parametri passati in ingresso, inoltre\u00a0NON \u00e8 possibile che due metodi differiscano solamente per il tipo&#8230; <a href=\"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":4451,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1950],"tags":[2210,2227],"class_list":["post-5615","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-poliformismo","tag-public-void"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Il Poliformismo in Java \u2013 Parte 3 - iProg<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Il Poliformismo in Java \u2013 Parte 3 - iProg\" \/>\n<meta name=\"twitter:description\" content=\"Poliformismo\u00a0Ad-Hoc: Overloading\u00a0 Lo stesso nome di metodo pu\u00f2 essere \u201csovraccaricato\u201d per manifestare diversi comportamenti, all&#8217;interno di una classe o catena d&#8217;eredit\u00e0, i\u00a0metodi di cui si fa l\u2019overlaoding devono essere distinguibili per numero e\/o tipi di parametri passati in ingresso, inoltre\u00a0NON \u00e8 possibile che due metodi differiscano solamente per il tipo... Read more &raquo;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@flexkid1\" \/>\n<meta name=\"twitter:site\" content=\"@iprogblog\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diego\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/\"},\"author\":{\"name\":\"Diego\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/048c8acb70f8a33f1498675ab9db41a3\"},\"headline\":\"Il Poliformismo in Java \u2013 Parte 3\",\"datePublished\":\"2014-03-22T17:39:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/\"},\"wordCount\":1249,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/01\\\/java-logo.jpeg\",\"keywords\":[\"Poliformismo\",\"public void\"],\"articleSection\":[\"Java\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/\",\"name\":\"Il Poliformismo in Java \u2013 Parte 3 - iProg\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/01\\\/java-logo.jpeg\",\"datePublished\":\"2014-03-22T17:39:24+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/048c8acb70f8a33f1498675ab9db41a3\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/java\\\/il-poliformismo-java-parte-3\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/01\\\/java-logo.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/01\\\/java-logo.jpeg\",\"width\":651,\"height\":400},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/\",\"name\":\"iProg\",\"description\":\"perch\u00e9 reinventare la ruota?\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/048c8acb70f8a33f1498675ab9db41a3\",\"name\":\"Diego\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g\",\"caption\":\"Diego\"},\"description\":\"Google+\",\"sameAs\":[\"http:\\\/\\\/it.linkedin.com\\\/in\\\/diegocaridei\\\/\",\"https:\\\/\\\/x.com\\\/flexkid1\",\"http:\\\/\\\/www.youtube.com\\\/channel\\\/UCjQ2z1ygV9tv55QAc2q3JHA\"],\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/author\\\/flexkid\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Il Poliformismo in Java \u2013 Parte 3 - iProg","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/","twitter_card":"summary_large_image","twitter_title":"Il Poliformismo in Java \u2013 Parte 3 - iProg","twitter_description":"Poliformismo\u00a0Ad-Hoc: Overloading\u00a0 Lo stesso nome di metodo pu\u00f2 essere \u201csovraccaricato\u201d per manifestare diversi comportamenti, all&#8217;interno di una classe o catena d&#8217;eredit\u00e0, i\u00a0metodi di cui si fa l\u2019overlaoding devono essere distinguibili per numero e\/o tipi di parametri passati in ingresso, inoltre\u00a0NON \u00e8 possibile che due metodi differiscano solamente per il tipo... Read more &raquo;","twitter_image":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo.jpeg","twitter_creator":"@flexkid1","twitter_site":"@iprogblog","twitter_misc":{"Scritto da":"Diego","Tempo di lettura stimato":"6 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/#article","isPartOf":{"@id":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/"},"author":{"name":"Diego","@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/048c8acb70f8a33f1498675ab9db41a3"},"headline":"Il Poliformismo in Java \u2013 Parte 3","datePublished":"2014-03-22T17:39:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/"},"wordCount":1249,"commentCount":0,"image":{"@id":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo.jpeg","keywords":["Poliformismo","public void"],"articleSection":["Java"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/","url":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/","name":"Il Poliformismo in Java \u2013 Parte 3 - iProg","isPartOf":{"@id":"https:\/\/www.iprog.it\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/#primaryimage"},"image":{"@id":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo.jpeg","datePublished":"2014-03-22T17:39:24+00:00","author":{"@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/048c8acb70f8a33f1498675ab9db41a3"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.iprog.it\/blog\/java\/il-poliformismo-java-parte-3\/#primaryimage","url":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo.jpeg","contentUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2013\/01\/java-logo.jpeg","width":651,"height":400},{"@type":"WebSite","@id":"https:\/\/www.iprog.it\/blog\/#website","url":"https:\/\/www.iprog.it\/blog\/","name":"iProg","description":"perch\u00e9 reinventare la ruota?","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iprog.it\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/048c8acb70f8a33f1498675ab9db41a3","name":"Diego","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g","caption":"Diego"},"description":"Google+","sameAs":["http:\/\/it.linkedin.com\/in\/diegocaridei\/","https:\/\/x.com\/flexkid1","http:\/\/www.youtube.com\/channel\/UCjQ2z1ygV9tv55QAc2q3JHA"],"url":"https:\/\/www.iprog.it\/blog\/author\/flexkid\/"}]}},"views":1821,"_links":{"self":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts\/5615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/comments?post=5615"}],"version-history":[{"count":0,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts\/5615\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/media\/4451"}],"wp:attachment":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/media?parent=5615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/categories?post=5615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/tags?post=5615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}