2013-04-22, 22:29
  #1
Medlem
RompeTodos avatar
Hejsan. Sitter och tentapluggar lite och märker att jag har väldigt dålig koll på att just granska kod och vad koden betyder. Jag har en gammal tenta framför mig där jag ska granska kod och avgöra om påståenden som ges är korrekta eller falska och fattar inte så mycket faktiskt, jag förstår om ni inte har tid att gå igenom "alla" svar, men vi kan väl hjälpas åt?


SEGELBÅT

GästHamn

BÅT

MOTORBÅT

TestKlass

Detta är då alla klasser som presenteras i tentan. Frågorna är som lyder:
"testMetoderna" återfinns i TestKlassen.

1.testMetod1 kommer inte att leda till något kompileringsfel (sant)

2.testMetod2 kommer inte att leda till något kompileringsfel (sant)

3.testMetod3 kommer inte att leda till något kompileringsfel (sant)

4.testMetod4 kommer inte att leda till något kompileringsfel (falskt)

5.testMetod5 kommer inte att leda till något kompileringsfel (falskt)

6.testMetod6 kommer inte att leda till något kompileringsfel (falskt)

7.testMetod7 kommer inte att leda till något kompileringsfel (sant)

8.testMetod8 kommer inte att leda till något kompileringsfel (falskt)

Egna funderingar:
1. båtA.getRegNr - I testklassen så skapar vi ju en ny kopia av båt (båtA = new Båt).
går vi då till båtklassen så ser vi att den har skapat en kopia(?) (this.regnr = regNr) av regnummer? Är det så man ska tänka här?

2.båtB.getRegNr - i samma klass skapar vi en ny kopia av segelbåt. Går vi till segelbåtklassen så ser vi att konstruktorn tar in regNr som parameter är det därför detta påstående också är sant?

3.båtC.getRegNr - Skapar kopia motorbåt. I motorbåtklassen tar konstrukorn in parametrar av regNr, rätt?

4.båtC.getRegNr (obs String) - för att motorbåtens konstruktor deklarerar(?) regNr till int? (därför är detta påstende "falskt"?)

5,6,7,8 har jag inte en aning om. Vore bussigt om ni kunde förklara hur det ska tänkas.
Tittar vi på facit (här över) så ser vi att fråga 7 är sann, varför?

Stort tack för all hjälp, mvh.

Edit: Bonusfråga:


9.Klassen Gästhamn ärver från klassen Båt (sant/falskt)
Om en klass ska "ärva" något från en annan klass, innebär det per automatik att gästhamn i den här fallet alltid är en subklass till båt (som då är en superklass)?.
Eller kan klass A ärva från B utan att A är en subklas och B är en superklass?
Hur kan det i så fall se ut? Själva arvet alltså.

Jag vet att om A är en subklass till B så står det i A´s källkod, ex, "Class A extends B".
Kan klasser ärva utan att vi har "extends" med i koden?
__________________
Senast redigerad av RompeTodo 2013-04-22 kl. 22:46.
Citera
2013-04-23, 00:01
  #2
Medlem
Citat:
5,6,7,8 har jag inte en aning om. Vore bussigt om ni kunde förklara hur det ska tänkas.
Tittar vi på facit (här över) så ser vi att fråga 7 är sann, varför?
Jag är ingen expert på java precis men fråga 7 är sann eftersom båt klassen är superklass och är redan en del av subklasserna. 5,6,8 Kika på parametrarna.. Om metoder returnerar en double så funkar det inte med en integer
__________________
Senast redigerad av machol07 2013-04-23 kl. 00:06.
Citera
2013-04-23, 06:50
  #3
Moderator
Protons avatar
testmetod1 kommer sannolikt INTE kompilera, eftersom du i båtklassen har en medtod som heter getRegNe(), medan du i testklassen försöker anropa en metod som heter getRegNr() som inte finns.

Det kanske är en typo dock?

Klasser kan inte ärva av varandra om inte extends används.

Normalt sett är det så att du alltid kan typa om från ett "mindre" objekt till ett större, men inte tvärtom. En båt kan du med andra ord explicit typa om till en motorbåt, men däremot kommer koden inte kompilera om du försöker typa om en motorbåt till en båt. Det innebär att har du en referens till en båt kommer du att kunna peka om den till en motorbåt utan problem, däremot hade det inte funkat åt andra hållet.
__________________
Senast redigerad av Proton 2013-04-23 kl. 06:53.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in