Implementing inheritance in JAVA  
Author Message
manjunath.d





PostPosted: 2005-2-8 20:00:00 Top

java-programmer, Implementing inheritance in JAVA Hi,

I am a naive JAVA user. Can you please tell me, oh how to implement
the following scenario

A
^ ^
/ \
B C
^ ^
\ /
D

Classes B and C extends class A, but how to define class D, such that
members of both B and C are available to D.

Thanks
>> manjunath

 
asb





PostPosted: 2005-2-8 20:09:00 Top

java-programmer >> Implementing inheritance in JAVA email***@***.com wrote in comp.lang.java.programmer:
> Classes B and C extends class A, but how to define class D, such that
> members of both B and C are available to D.

Java does not support multiple inheritance, so class D can not
provide the methods through Java's inheritance mechanism.

Internet contains a lot of information about this. Search Google
for "java multiple inheritance".

--
Antti S. Brax Rullalautailu pitæ»— lapset poissa ladulta
http://www.iki.fi/asb/ http://www.cs.helsinki.fi/u/abrax/hlb/
"Disconnect this cable to shorten, re-connect to lengthen."
-- Instructions on Logitech's USB mouse extension cord.
 
John





PostPosted: 2005-2-8 20:39:00 Top

java-programmer >> Implementing inheritance in JAVA email***@***.com wrote:
> Hi,
>
> I am a naive JAVA user. Can you please tell me, oh how to implement
> the following scenario
>
> A
> ^ ^
> / \
> B C
> ^ ^
> \ /
> D
>
> Classes B and C extends class A, but how to define class D, such that
> members of both B and C are available to D.
>
> Thanks
>
>>>manjunath
>
>

You can't. Make D a subclass of A, just like B and C. If you want to
specify some additional behaviour for D then define interface(s) that it
must implement, along with (optionally) either B, C, or both B and C.

John
 
 
Darryl L. Pierce





PostPosted: 2005-2-8 22:25:00 Top

java-programmer >> Implementing inheritance in JAVA You cannot do that. Java does not support multiply inheritence of
*implementation*.

However, if you were to make A, B and C _interfaces_, then D could
implement both B and C. Then, using patterns (such as
Wrapper/Decorator), you could do the following:

A--extended by-->B--implemented by-->Bimpl
A--extended by-->C--implemented by-->Cimpl

D--extends both-->[B,C]--contains instances of-->[Bimpl,Cimpl]

Then your D could pass calls to those methods defined in the A, B and C
interfaces to the specific instance variables of tyep Bimpl and Cimpl
as necessary.

 
 
Lorenzo Bettini





PostPosted: 2005-2-14 22:45:00 Top

java-programmer >> Implementing inheritance in JAVA Darryl L. Pierce wrote:
> You cannot do that. Java does not support multiply inheritence of
> *implementation*.
>
> However, if you were to make A, B and C _interfaces_, then D could
> implement both B and C. Then, using patterns (such as
> Wrapper/Decorator), you could do the following:
>
> A--extended by-->B--implemented by-->Bimpl
> A--extended by-->C--implemented by-->Cimpl
>
> D--extends both-->[B,C]--contains instances of-->[Bimpl,Cimpl]
>
> Then your D could pass calls to those methods defined in the A, B and C
> interfaces to the specific instance variables of tyep Bimpl and Cimpl
> as necessary.
>

In our paper

On Multiple Inheritance in Java
L. Bettini, M. Loreti, B. Venneri. Technology of Object-Oriented
Languages, Systems and Architectures, Proc. of TOOLS Eastern Europe
2002, (Theo D'Hondt, Ed.), pages 1-15, Kluwer Academic Publishers, 2003.
http://music.dsi.unifi.it/abstracts/multipinh-abs.html
http://music.dsi.unifi.it/papers/multipinh.ps.gz

we provide a general algorithm to automatically implement multiple
inheritance in Java; this also shows that it is not straighforward to
simulate the exact semantics of multiple inheritance through interfaces
and object composition.

Lorenzo

--
+-----------------------------------------------------+
| Lorenzo Bettini ICQ# lbetto, 16080134 |
| PhD in Computer Science |
| Dip. Sistemi e Informatica, Univ. di Firenze |
| Tel +39 055 4237441, Fax +39 055 4237437 |
| Florence - Italy (GNU/Linux User # 158233) |
| Home Page : http://www.lorenzobettini.it |
| http://music.dsi.unifi.it XKlaim language |
| http://www.lorenzobettini.it/purple Cover Band |
| http://www.gnu.org/software/src-highlite |
| http://www.gnu.org/software/gengetopt |
| http://www.lorenzobettini.it/software/gengen |
| http://www.lorenzobettini.it/software/doublecpp |
+-----------------------------------------------------+