Implementing inheritance in JAVA

M

manjunath.d

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
 
A

Antti S. Brax

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".
 
J

John

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

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
 
D

Darryl L. Pierce

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.
 
L

Lorenzo Bettini

Darryl said:
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 |
+-----------------------------------------------------+
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top