F19 - Polymorfism och dynamisk bindning Flashcards
Vad innebär polymorfism?
att olika objekt har gemensamma beteenden
Ge exempel på polymorfism
- Metodöverskuggnig
- Dynamisk bindning
- Abstrakta klasser
- Interface
- Överlagring
Vilka klasser kan definieras som static?
Nästlade (inre) klasser
Vad är speciellt med statiska metoder?
Dessa kan anropas utan att ett objekt av klassen har skapats
Hur anropar man statiska metoder?
klassNamnet.metodNamnet( );
Vad tillhör en static metod till skillnad från “vanliga” metoder som inte är static?
En metod som är definierad som static tillhör klassen och inte objektet, övriga metoder har en kopia av sig själv i varje skapat objekt, medan static metoder inte har det
Vilka begränsningar har statiska metoder?
- Kan inte anropa icke-statiska metoder
- Kan inte använda icke-statiska variabler
Hur kan nyckelordet final användas?
- Klasser: för att förhindra arv
- Metoder: för att förhindra metodöverskuggning
- Variabler: för att skapa en konstant
Hur kan man förhindra arv?
Genom att definiera klassen med nyckelordet final
Hur kan man förhindra metodöverskuggning?
Genom att definiera metoden med nyckelordet final
Vad är en virtuell metod?
en metod som kan överskuggas
Behöver man definiera att en metod är virtuell?
Nej, metoder är virtuella by default i java
Hur tydliggör man att en metod är överskuggad?
Genom att skriva @Override ovanför metoden
Vad innebär överskuggning?
Överskuggning innebär att en subklass kan skriva egen implementation för en metod
Kan överskuggning ske i en subklass även om den berörda metoden har en implementation i superklassen?
Ja, sålänge metoden i superklassen inte är definierad med nyckelordet final
På vilket sätt är överskuggning polymorfism?
Eftersom metoden som körs beror på typen av objekt som gör anropet, detta bestämt under körning
Om objekt av superklassen anropar en metod, och implementation finns i både superklassen och överskuggat i subklassen, vilken metod körs?
metoden i superklassen
Om en objekt av subklassen anropar en metod som har implementation i superklassen och en överskuggning i subklassen, vilken metod körs?
den överskuggade metoden i subklassen
vad är toString( )-metoden default beteende?
skriva ut
klassnamnet@hashcode
vilket klass tillhör toString( )?(ej överlagrade eller överskuggade)
Object
Vad kallas överskuggning på engelska?
Overriding
Vad innebär överlagring?
att skriva metoder med olika signaturer, men samma namn
Vad innebär en metods signatur?
metodnamn + metodparametrar
Hur kan signaturerna skilja sig åt vid överlagring?
olika datatyper eller olika ordning på parametrar
Vad menas med metoddefinition?
metodsignatur + metoden returtyp + ev modifierare
vad händer om det enda som skiljer två metoder är returvärde?
kompileringsfel