Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #30222

Re: Object orientation question

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!news.swapon.de!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail
From Eric Sosman <esosman@comcast-dot-net.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: Object orientation question
Date Tue, 28 Oct 2014 08:29:45 -0400
Organization A noiseless patient Spider
Lines 67
Message-ID <m2o27l$ak0$1@dont-email.me> (permalink)
References <0b94f856-9631-48ee-8d2d-94055d79cfd6@googlegroups.com> <m2mb82$cef$1@dont-email.me> <cb80jkFmoa9U1@mid.individual.net> <slrnm4upel.fp3.avl@login.logic.tuwien.ac.at>
Mime-Version 1.0
Content-Type text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding 7bit
Injection-Date Tue, 28 Oct 2014 12:29:41 +0000 (UTC)
Injection-Info mx02.eternal-september.org; posting-host="bd4e1cba8d8592bec5d5ed9e4537fbfd"; logging-data="10880"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19LQ3zUu/+mEFUiMjbbCKd8"
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0
In-Reply-To <slrnm4upel.fp3.avl@login.logic.tuwien.ac.at>
Cancel-Lock sha1:m/OGBpYkicEWsUEmBWKzOi95uuM=
Xref csiph.com comp.lang.java.programmer:30222

Show key headers only | View raw


On 10/28/2014 5:45 AM, Andreas Leitgeb wrote:
> Robert Klemme <shortcutter@googlemail.com> wrote:
>> On 27.10.2014 21:51, Eric Sosman wrote:
>>>       Clearly, the generated code is the same: AdditionInterface extends
>>> BaseInterface, therefore any class implementing AdditionInterface also
>>> necessarily implements BaseInterface.  If the class fails to provide a
>>> method specified by BaseInterface, the code won't compile.  So the
>>> question is purely about readability and style.
>> This is not fully correct: if you check with reflection you will see
>> that there is a difference in what Class.getInterfaces() returns.
>
> You don't even need reflection to notice a difference:
>
> interface A { ... }               |  interface A { ... }
> interface B { ... }               |  interface B extends A { ... }
> class C implements A,B { ... }    |  class C implements B { ... }
> ...                               |  ...
>     B foo = new C();               |     B foo = new C();
>     A bar = foo;  // barf!         |     A bar = foo; // ok
>
> Instead of the second assignment you could have a call to a
> method that takes an A and gets passed B-typed reference foo.

     My Java compiler (Oracle's 1.8.0_20 on 64-bit Windows 7)
doesn't "barf" as you report.  Has something changed?  Are you
using a different javac?  Here's the code; I've fleshed out
the ellipses and changed one name:

	interface A {
	   void aMethod();
	}

	interface B extends A {
	   void bMethod();
	}

	class C implements A, B {
	   public void aMethod() {
	   }

	   public void bMethod() {
	   }

	   void foo() {
	      B foo = new C();
	      A bar = foo;   // fine
	   }
	}

	class D implements B {
	   public void aMethod() {
	   }

	   public void bMethod() {
	   }

	   void foo() {
	      B foo = new D();
	      A bar = foo;   // fine, no "barf"
	   }
	}

I put all this in a file called "Andreas.java", ran javac on it,
and got four class files and no complaints.

-- 
esosman@comcast-dot-net.invalid

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Object orientation question mike <mikaelpetterson@hotmail.com> - 2014-10-27 13:26 -0700
  Re: Object orientation question Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-10-27 16:51 -0400
    Re: Object orientation question Robert Klemme <shortcutter@googlemail.com> - 2014-10-27 23:51 +0100
      Re: Object orientation question Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-10-28 09:45 +0000
        Re: Object orientation question Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-10-28 08:29 -0400
          Re: Object orientation question Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-10-28 08:33 -0400
            Re: Object orientation question Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-10-28 16:26 +0000
        Re: Object orientation question Robert Klemme <shortcutter@googlemail.com> - 2014-10-29 08:35 +0100
          Re: Object orientation question Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-10-30 00:32 +0000

csiph-web