Av samma anledning som du inte har tillgång till klasser i C. Det finns helt enkelt inte inbyggt i språket.
------------------
Hollowhead - levererar din dagliga dos av nyttig hårdrock!
13 svar · 623 visningar · startad av ps
Har undrat ett tag nu varför det inte går att ärva från flera klasser i Java.
Nån som har ett bra svar på det?
det funkar i C++ och är inte helt fel.
Java är iofs ett mer strukturerat språk, kanske har med det att göra?
r
stavfel
------------------
ps » Email » URL
[Redigerat av ps den 24 okt 2001]
Av samma anledning som du inte har tillgång till klasser i C. Det finns helt enkelt inte inbyggt i språket.
------------------
Hollowhead - levererar din dagliga dos av nyttig hårdrock!
Om jag har förstått saken rätt, har de medvetet avstått från den möjligheten för att göra språket enkelt. Om man inte tänker sig för, går det att krångla till allt ganska ordentligt med multipelt arv.
Med multipelt arv kommer problem med ett allt för komplicerat språk med komplexa och ineffektiva implementationer utan att det egentligen tillför något av riktigt värde. Det var anledningen till varför det inte infördes i Java, ungefär som med operatoröverlagring, det är en snygg finess, men det orsakar långt mer problem och buggig/komplex kod än det ger fördelar.
I Java har du interfaces att tillgå, inte riktigt samma sak men de ger nästan lika mycket som multipelt arv utan att ha dess nackdelar.
[r] Tillägg:
En av de huvudsakliga designideérna med Java var att göra ett språk som tog fasta på alla bra saker i C++ men som rensade bort sånt som ofta orsakar problem, som t.ex multipelt arv.
------------------
det finns ingen.info tillgänglig.
"inside every human being there's an american trying to get out".
[Redigerat av sgtpepper den 24 okt 2001]
Och med en bra och välstrukturerad systemdesign behövs inte multipla arv.
/Lime
------------------
Praeterea conseo microsoftenem esse delendam.
- modernt latinskt ordspråk
Multipla arv och arv överhuvudtaget är lite överskattat.
Istället för att ärva en implementation så brukar jag använda mig av interfaces och i den klass som skulle varit en barn klass har jag istället en instans av base klassen som jag jobbar med.
bara mina två pesetas.
Därför att användare per definition är korkade och gör fel ;)
Det kan ju tilläggas att funktionaliteten av ett multipelt arv i C++ är kompilatorberoende. Om det finns 2 funktioner med samma namn i de två klasserna man ärver från avgör kompilatorn vilken som ska gälla.
Interfacen i Java tvingar en att implementera dem rätt. Det är ju en av grundtankarna i Java att göra det hela plattformsoberoende, så det är ganska logiskt att det inte finns :)
------------------
The computer is mightier than the pen, the sword, and usually, the programmer.
Det är väl så också att det blir automatiskt en "renare" objekt orientering.
Bil ärver av Fordon, fine! Men ärver den av Växt också kan logiken bli en smula bucklig.
phlonk
En viktig aspekt i utformingen av Java var att se till att programmeraren inte kan göra fel. T.ex. ta bort pekarna och multipelt arv.
Genom att minska programvaru-felen så ökar programmerarnas effektivitet. Dvs det minskar tiden man behöver tillbringa med att försöka hitta komplicerade och krångliga buggar.
------------------
Anders Lindbäck,Igiro Internet Giro
Men ärver den av Växt också kan logiken bli en smula bucklig.
Då kanske bilens inredning möglar ;) Annars tycker jag det vore bra om rosten skulle kunna försvinna av att det växer fram ny fin plåt :)
He he, japp, men då implementerar man Growable istället eller hoppar över Corrodable.
Vore det inte händigt om bilen var Eatable också? Då kunde man åka till jobbet och äta upp delar av taket om det var soligt.
------------------
Hollowhead - levererar din dagliga dos av nyttig hårdrock!