Skrivet av heretic16:
Så hur ska jag göra för att kombinera vissa metoder och parametrar från Vehicle och Person i klassen Robot?
Kortfattat: Det kan du inte pga. att multipla arv inte är tillåtna i java.
Jag förstår tanken bakom din kod att interfacet på något vis skulle agera medlare mellan två olika klasser, som en sorts multipelt arv, men det fungerar inte riktigt så.
Ok, ett annat sätt man kan se det är så här. Ett interface är ett certifikat. När du implementerar ett interface i en klass så är interfacet ett certifikat på att klassen har de funktioner som interfacet specificerar. Interfacet i sig själv innehåller absolut ingen data, det är bara en lista över saker klassen lovar den kan göra, och i vilka format den vill ta emot samt returnera data.
Abstrakta klasser verkar du dock ha fått kläm på. De är helt enkelt som vanliga klasser med viktigaste undantaget att de inte går att skapa objekt på, så man använder dem i regel som superklass för underklasser som har väldigt mycket gemensam logik.
Sen kanske du undrar: "varför ens använda abstrakta klasser när jag kan använda vanliga klasser ? det är ju trots allt jag själv som väljer vilka klasser jag behöver skapa objekt på."
Detta är förvisso väldigt sant, men föreställ ett gigantiskt projekt med flera tiotusentals rader kod och 20+ utvecklare som jobbar tillsammans på det. Ibland kan det vara bra att ha en begränsning så att inte någon annan skapar objekt på en klass som inte är menad för det.
Det är lite pga. samma scenario som Interface kom in i bilden. När flera kodare jobbar på samma projekt så kan det vara bra att ha "certifikat" på vissa klasser så man vet att de kan utföra det där specifika arbetsmomentet man behöver, samt man vet vilka värdetyper som förväntas och/eller returneras.
Jag kan tyvärr varken förklara det bättre, eller demonstrera det bättre än vad jag redan försökt. Mitt tips är att om det känns för luddigt så lägg inte så mycket vikt vid Interface just nu. Fokusera på klasser och abstrakta klasser och relationen mellan de två. Man kan göra enormt mycket utan att ens använda sig av Interface, så det är ingen livsviktig komponent i programmering.
Återuppta konceptet sen när du har full koll på klasser och arv.