Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!newsfeed.utanet.at!newscore.univie.ac.at!aconews-feed.univie.ac.at!aconews.univie.ac.at!not-for-mail Newsgroups: comp.lang.java.programmer From: Andreas Leitgeb Subject: Re: super References: <3e87dcf3-6842-41bf-8eb8-0c4181a178a9@k1g2000vbz.googlegroups.com> Reply-To: avl@logic.at User-Agent: slrn/pre0.9.9-111 (Linux) Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: Date: 18 Sep 2011 18:29:37 GMT Lines: 27 NNTP-Posting-Host: gamma.logic.tuwien.ac.at X-Trace: 1316370577 tunews.univie.ac.at 11354 128.130.175.3 X-Complaints-To: abuse@tuwien.ac.at Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:8134 Andreas Leitgeb wrote: > Joshua Cranmer wrote: >> On 9/18/2011 11:53 AM, giuseppe.on.usenet wrote: >>> When I run dir2.Child, I get: >>> var is 1 >>> which is what I was expecting. >>> When I run dir2.GrandChild, I get: >>> super.var is 2 >>> var is 2 >>> These last two variables have the same value, although I only modified >>> gc.var in GrandChild.java. Why? >> How many times did you declare a variable named `var'? By my count, you >> defined it once, so `var' and `super.var' both refer to the same >> variable `var', namely the one defined in Parent. > > I think the misunderstanding is far more basic. > > To giuseppe: > > In dir2.GrandChild's main, just remove the line, where you instantiate > Child, and leave the rest exactly as is. Recompile & run it. You'll > see that instantiating class Child (or not doing it) doesn't change > anything. What does this tell you? Alternatively, leave the line "Child c = new Child();" in, and rather add another line "c.test()" to the end of GrandChild's main method.