multiple inheritance

Discussion in 'Java' started by bob smith, Aug 4, 2012.

  1. bob smith

    bob smith Guest

    From: "bob smith" <bob.smith@1:261/38.remove-yy0-this>

    From: "bob smith" <bob.smith@1:261/38.remove-s5y-this>

    From: bob smith <>

    Why doesn't Java support multiple inheritance?

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
     
    bob smith, Aug 4, 2012
    #1
    1. Advertising

  2. bob smith

    markspace Guest

    To: bob smith
    From: "markspace" <markspace@1:261/38.remove-yy0-this>

    To: bob smith
    From: "markspace" <markspace@1:261/38.remove-s5y-this>

    To: bob smith
    From: markspace <-@.>

    On 8/1/2012 7:28 PM, bob smith wrote:
    > Why doesn't Java support multiple inheritance?
    >


    The diamond problem. I'm not really up on the details however.

    I can tell you from hanging out on the lambda-dev list (Java 8 features) that
    Brian Goetz has pushed back strongly on any sort of multiple inheritance.
    Apparently the diamond problem is a real bear and introduces real complexity
    into both the compiler and the user code that can cause big problems in the
    long run.

    http://en.wikipedia.org/wiki/Diamond_problem

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
     
    markspace, Aug 4, 2012
    #2
    1. Advertising

  3. bob smith

    Eric Sosman Guest

    To: bob smith
    From: "Eric Sosman" <eric.sosman@1:261/38.remove-yy0-this>

    To: bob smith
    From: "Eric Sosman" <eric.sosman@1:261/38.remove-s5y-this>

    To: bob smith
    From: Eric Sosman <>

    On 8/1/2012 10:28 PM, bob smith wrote:
    > Why doesn't Java support multiple inheritance?


    To discourage formation of a Kennefeller dynasty?

    Because diamonds are a girl's best friend but a programmer's
    biggest headache?

    The web is full of pages discussing the pros and cons of
    Java's choice. Perhaps you should read a few of them and then (if so moved)
    post "Excuse E for omitting multiple inheritance seems unconvincing to me for
    reasons R1 and R2, despite supporting arguments S1 through S9. Here's a
    concrete example where I think R1 and R2 trump S* and overturn E; what do
    others think?"

    --
    Eric Sosman
    d

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
     
    Eric Sosman, Aug 4, 2012
    #3
  4. To: bob smith
    From: "Joshua Cranmer" <joshua.cranmer@1:261/38.remove-yy0-this>

    To: bob smith
    From: "Joshua Cranmer" <joshua.cranmer@1:261/38.remove-s5y-this>

    To: bob smith
    From: Joshua Cranmer <>

    On 8/1/2012 10:28 PM, bob smith wrote:
    > Why doesn't Java support multiple inheritance?


    Because multiple inheritance is really, really, really complicated and
    confusing for most users.

    The short answer is the diamond problem:

    class A { int varA; };
    class B : A { int varB; };
    class C : A { int varC; };
    class D : B, C { int varD; };

    There are two main points of contention in this kind of hierarchy: 1. How many
    copies of varA should D have? Intuitively, one is probably what most people
    would expect, but the implementations of B and C would have to cooperate in
    realizing that their superclass may be shared with D. It also incurs a penalty
    in runtime costs 2. How does initialization/override order get resolved? Is it
    "BFS"-y (like D, B, C, A) or "DFS"-y (D, B, A, C)? There are even more
    convoluted orders in practice (C3 appears to be the most common nowadays), but
    this is the sort of stuff that tends to cause nasty sorts of little edge cases
    in practice.

    It is rare in practice that you need true multiple inheritance, in the sense of
    inheritance of implementation; multiple inheritance of interface is common, and
    this is as far as Java goes.

    --
    Beware of bugs in the above code; I have only proved it correct, not tried it.
    -- Donald E. Knuth

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
     
    Joshua Cranmer, Aug 4, 2012
    #4
  5. To: markspace
    From: "Gene Wirchenko" <gene.wirchenko@1:261/38.remove-yy0-this>

    To: markspace
    From: "Gene Wirchenko" <gene.wirchenko@1:261/38.remove-s5y-this>

    To: markspace
    From: Gene Wirchenko <>

    On Wed, 01 Aug 2012 20:07:58 -0700, markspace <-@.> wrote:

    >On 8/1/2012 7:28 PM, bob smith wrote:
    >> Why doesn't Java support multiple inheritance?


    >The diamond problem. I'm not really up on the details however.


    Such a lovely name. The link does go into enough detail to
    understand it.

    >I can tell you from hanging out on the lambda-dev list (Java 8 features)
    >that Brian Goetz has pushed back strongly on any sort of multiple
    >inheritance. Apparently the diamond problem is a real bear and
    >introduces real complexity into both the compiler and the user code that
    >can cause big problems in the long run.
    >
    >http://en.wikipedia.org/wiki/Diamond_problem


    It also has a number of different handlings in MI languages so
    there is not an obvious solution.

    Sincerely,

    Gene Wirchenko

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
     
    Gene Wirchenko, Aug 4, 2012
    #5
  6. bob smith

    Lew Guest

    To: Joshua Cranmer
    From: "Lew" <lew@1:261/38.remove-yy0-this>

    To: Joshua Cranmer
    From: "Lew" <lew@1:261/38.remove-s5y-this>

    To: Joshua Cranmer
    From: Lew <>

    Joshua Cranmer wrote:
    > bob smith wrote:
    >> Why doesn't Java support multiple inheritance?


    Strictly speaking, Java does support multiple inheritance, just not from
    classes.

    This is because multiple inheritance of implementation is silly.

    > Because multiple inheritance is really, really, really complicated and
    > confusing for most users.
    >
    > The short answer is the diamond problem:
    >
    > class A { int varA; };
    >
    > class B : A { int varB; };
    >
    > class C : A { int varC; };
    >
    > class D : B, C { int varD; };
    >
    > There are two main points of contention in this kind of hierarchy:
    >
    > 1. How many copies of varA should D have? Intuitively, one is probably
    >
    > what most people would expect, but the implementations of B and C would
    >
    > have to cooperate in realizing that their superclass may be shared with
    >
    > D. It also incurs a penalty in runtime costs
    >
    > 2. How does initialization/override order get resolved? Is it "BFS"-y
    >
    > (like D, B, C, A) or "DFS"-y (D, B, A, C)? There are even more
    > convoluted orders in practice (C3 appears to be the most common
    > nowadays), but this is the sort of stuff that tends to cause nasty sorts
    > of little edge cases in practice.
    >
    > It is rare in practice that you need true multiple inheritance, in the
    > sense of inheritance of implementation; multiple inheritance of
    > interface is common, and this is as far as Java goes.


    Quite so.

    --
    Lew

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
     
    Lew, Aug 4, 2012
    #6
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. maxw_cc
    Replies:
    1
    Views:
    3,151
    Martijn van Steenbergen
    Dec 21, 2003
  2. cppsks
    Replies:
    0
    Views:
    827
    cppsks
    Oct 27, 2004
  3. karthikbalaguru
    Replies:
    9
    Views:
    1,045
  4. Daniel Pitts
    Replies:
    27
    Views:
    1,913
    Mike Schilling
    Feb 27, 2008
  5. Rouslan Korneychuk
    Replies:
    8
    Views:
    605
    Rouslan Korneychuk
    Feb 10, 2011
Loading...

Share This Page