TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy


Options: Use Classic View

Use Monospaced Font
Show Text Part by Default
Condense Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Sender: "Team Ada: Ada Advocacy Issues (83 & 95)" <[log in to unmask]>
Date: Wed, 7 Feb 2001 00:40:49 +0300
Reply-To: "Alexandre E. Kopilovitch" <[log in to unmask]>
From: "Alexandre E. Kopilovitch" <[log in to unmask]>
Content-Type: text/plain; charset=us-ascii
In-Reply-To: <"B183ZYVZPLPPE*/R=FBDCVD/R=A1/U=MCCABE JOHN/"@MHS>; from "[log in to unmask]" at Tue, 06 Feb 2001 17:46:05 +0000 (GMT)
Organization: h w c employees, b f
MIME-Version: 1.0
Parts/Attachments: text/plain (73 lines)
[log in to unmask] wrote:
>>>>>The only thing Java added
>>>>to C++ was a little bit of (not nearly enough) error-resistance.
>>>So what is the difference between a Java Interface and a C++ pure virtual
>>class (apart from the C++ version being less restrictive)?
>>Well, consider the following declaration:
>>  public class GentleThread implements Runnable {
>>    ...
>>    }
>>How do you say that in C++ ? I.e., what in C++ corresponds to "implements" ?
>In C++, implements would simply be denoted by subclassing Runnable so you'd have:
>class GentleThread : public Runnable {
>   ...
>   }

No, you wrote an essentially different thing. Consider:

  public class GentleThread implements Runnable {

  public class BruteThread implements Runnable {

The way in which the GentleThread implements Runnable may be entirely different
from the BruteThread's implementation of the same interface. Those implementations
of the same interface do not depend from each other. At the same time, your
"C++ versions":

  class GentleThread : public Runnable {

  class BruteThread : public Runnable {

will inherit an identical implementation of the interface Runnable from the
ancestor class. Do you see the difference?

>Interfaces (and 'implements') are essentially Java's way of avoiding the
>problems associated with multiple inheritance.

Certainly, the interface are used in Java for that purpose also, but this
isn't all their value.

Stephen Schwarm <[log in to unmask]> wrote:
>Java does not support multiple inheritance so the is how it specifies
>common interface specifications.
>To answer your question directly:
>class GentleThread: public class Runnable
>Where Runnable has only abstract interfaces.

The same reply for the same arguments.

Alexander Kopilovitch                      [log in to unmask]