<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>722 &#187; java initialisation variable</title>
	<atom:link href="http://722.kalaari.net/b/lang/en/tag/java-initialisation-variable/feed/" rel="self" type="application/rss+xml" />
	<link>http://722.kalaari.net/b</link>
	<description>f 722 t 722 p 722 oxygen 722 722 722</description>
	<lastBuildDate>Mon, 15 Mar 2010 13:17:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Java: auto-initialisation des variables d&#8217;instance&#8230;ou pas</title>
		<link>http://722.kalaari.net/b/lang/en/2009/06/11/java-auto-initialisation-des-variables-dinstance-ou-pas</link>
		<comments>http://722.kalaari.net/b/lang/en/2009/06/11/java-auto-initialisation-des-variables-dinstance-ou-pas#comments</comments>
		<pubDate>Thu, 11 Jun 2009 08:42:46 +0000</pubDate>
		<dc:creator>LooZtrA</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[java initialisation variable]]></category>

		<guid isPermaLink="false">http://722.kalaari.net/b/?p=28</guid>
		<description><![CDATA[A chaque fois que je crée une nouvelle classe, je me demande si je dois forcer la valeur par défaut des variables d&#8217;instance. La plupart du temps je me dis &#8220;je ne veux pas dépendre d&#8217;un comportement par défaut, je vais forcer explicitement la valeur par défaut de la variable d&#8217;instance, ce sera plus lisible&#8221;. [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr">A chaque fois que je crée une nouvelle classe, je me demande si je dois forcer la valeur par défaut des variables d&#8217;instance. La plupart du temps je me dis &#8220;je ne veux pas dépendre d&#8217;un comportement par défaut, je vais forcer explicitement la valeur par défaut de la variable d&#8217;instance, ce sera plus lisible&#8221;. C&#8217;est peut-être discutable mais je n&#8217;ai jamais eu l&#8217;occasion d&#8217;en discuter avec des java-gurus, ni d&#8217;ailleurs de réellement me poser des questions sur le bien-fondé et la justesse de ce choix.</span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr">Jusqu&#8217;à ce jour. Je viens de découvrir (shame on me?) qu&#8217;il est parfois nécessaire de ne pas explicitement forcer la valeur par défaut.</span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span id="more-28"></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr">1er cas:</span></p>
<blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; font-family: arial;">public class MotherClass {</span></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public MotherClass(String&#8230; args) {<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">System.out.println(&#8220;MotherClass(): [BERORE CALL TO PREPARE] this:&#8221; + this);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">prepare(args);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">System.out.println(&#8220;MotherClass(): [AFTER CALL TO PREPARE] this:&#8221; + this);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}</span></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"><br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public void prepare(String&#8230; args) {</span></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">this.member0_1 = args[0];<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">this.member0_2 = args[1];<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">System.out.println(&#8220;MotherClass.prepare(): this:&#8221; + this);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public String toString() {<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">return &#8221;MotherClass &lt;member0_1=&#8221; + member0_1 + &#8221;, member0_2=&#8221; + member0_2 + &#8221;&gt;&#8221;;<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">protected String member0_1;<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">protected String member0_2 = &#8221;initialized&#8221;;<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public static void main(String[] args) {<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">MotherClass mc = new MotherClass(new String[] { &#8221;first&#8221;, &#8221;second&#8221; });<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">System.out.println(&#8220;main(): mc:&#8221; + mc);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}<br style="padding: 0px; margin: 0px;" />}</span></span></p>
</blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">Si on lance le <em>main</em>, ça donne:</span></span></p>
<blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">MotherClass(): [BERORE CALL TO PREPARE] this:MotherClass &lt;member0_1=null, member0_2=initialized&gt;<br style="padding: 0px; margin: 0px;" />MotherClass.prepare(): this:MotherClass &lt;<span style="margin: 0px; padding: 0px; background-color: #57ff00;">member0_1=first, member0_2=second</span>&gt;<br style="padding: 0px; margin: 0px;" />MotherClass(): [AFTER CALL TO PREPARE] this:MotherClass &lt;member0_1=first, member0_2=second&gt;<br style="padding: 0px; margin: 0px;" />main(): mc:MotherClass &lt;<span style="margin: 0px; padding: 0px; background-color: #02ff00;">member0_1=first, member0_2=second</span>&gt;</span></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;">
</blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">Dans ce cas, rien de particulier, la classe se comporte comme on peut s&#8217;y attendre, que la variable d&#8217;instance ait été initialisée (<span style="margin: 0px; padding: 0px; font-family: 'courier new'; font-size: 13px; font-style: italic;">member0_2)<span style="margin: 0px; padding: 0px; font-family: 'Times New Roman'; font-size: 16px; font-style: normal;"> ou pas (<span style="margin: 0px; padding: 0px; font-family: 'courier new'; font-size: 13px; font-style: italic;">member0_1</span>).</span></span></span></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;">
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr">Etendons maintenant cette classe:</span></p>
<blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public class ClassThatExtends extends MotherClass {<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public ClassThatExtends(String&#8230; args) {<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">super(args);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">System.out.println(&#8220;ClassThatExtends(): [AFTER super()] this:&#8221; + this);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public void prepare(String&#8230; args) {<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">if (args.length == 4) {<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">this.member0_1 = args[0];<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">this.member0_2 = args[1];<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">this.member1_1 = args[2];<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">this.member1_2 = args[3];<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">System.out.println(&#8220;ClassThatExtends.prepare(): this:&#8221; + this);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public String toString() {<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">return &#8221;ClassThatExtends &lt;member0_1=&#8221; + member0_1 + &#8221;, member0_2=&#8221; + member0_2<br style="padding: 0px; margin: 0px;" /> </span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">+ &#8221;, member1_1=&#8221; + member1_1 + &#8221;, member1_2=&#8221; + member1_2 + &#8221;&gt;&#8221;;<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">private String member1_1;<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">private String member1_2 = &#8221;initialized&#8221;;<br style="padding: 0px; margin: 0px;" /></span></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">public static void main(String[] args) {<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">ClassThatExtends cte = new ClassThatExtends(new String[] { &#8221;first&#8221;, &#8221;second&#8221;, &#8221;third&#8221;,<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">&#8220;fourth&#8221; });<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">System.out.println(&#8220;main(): cte:&#8221; + cte);<br style="padding: 0px; margin: 0px;" /></span><span style="margin: 0px; padding: 0px; white-space: pre;"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"> </span></span><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;">}<br style="padding: 0px; margin: 0px;" />}</span></span></p>
</blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr">Si on lance le <em>main</em>:</span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;">
<blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><em>MotherClass(): [BERORE CALL TO PREPARE] this:ClassThatExtends &lt;member0_1=null, member0_2=initialized, member1_1=null, member1_2=null&gt;</em></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><em>ClassThatExtends.prepare(): this:ClassThatExtends &lt;member0_1=first, member0_2=second, member1_1=third, member1_2=fourth&gt;</em></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><em>MotherClass(): [AFTER CALL TO PREPARE] this:ClassThatExtends &lt;member0_1=first, member0_2=second,<strong><span style="margin: 0px; padding: 0px; background-color: #00ff54;">member1_1=third</span></strong>, <strong><span style="margin: 0px; padding: 0px; background-color: #00ff54;">member1_2=fourth</span></strong>&gt;</em></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><em>ClassThatExtends(): [<strong>AFTER super()</strong>] this:ClassThatExtends &lt;member0_1=first, member0_2=second,<span style="margin: 0px; padding: 0px; background-color: #00ff54;"><strong>member1_1=third</strong></span>, <span style="margin: 0px; padding: 0px; background-color: #ffaa00;"><strong>member1_2=initialized</strong></span>&gt;</em></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><em>main(): cte:ClassThatExtends &lt;member0_1=first, member0_2=second, member1_1=third, member1_2=initialized&gt;</em></span></p>
</blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><span style="margin: 0px; padding: 0px; font-family: arial,helvetica,sans-serif;"><br />
</span></span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr"><em>WTF</em>? member1_1 qui n&#8217;a pas été explicitement initialisée dans la classe fille a gardé la valeur fixée lors de l&#8217;appel du constructeur, par contre, member1_2 qui a été explicitement initialisée a été écrasée après avoir été valorisée dans le constructeur!</span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr">Les variables d&#8217;instance d&#8217;une classe &#8220;fille&#8221; sont donc initialisées <strong><em>APRES</em></strong> la chaîne des appels des constructeurs.</span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr">Dans le cas où la variable n&#8217;est pas explicitement initialisée lors de sa déclaration et que la variable est valorisée dans le constructeur, la valeur de la variable d&#8217;instance sera conservée. Dans le cas où la variable d&#8217;instance est explicitement initialisée lors de sa déclaration et qu&#8217;elle est valorisée dans le constructeur, la valeur est écrasée par la valeur d&#8217;initialisation spécifiée!</span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-align: justify; line-height: 1.52em; padding: 0px;"><span lang="fr">Fichtre! En voila donc un comportement pas forcément trivial&#8230; Si quelqu&#8217;un arrive à me trouver le bout de doc chez Java (ou ailleurs) que j&#8217;ai du louper, je suis preneur.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://722.kalaari.net/b/lang/en/2009/06/11/java-auto-initialisation-des-variables-dinstance-ou-pas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
