F20 - Polymorfism fortsättning, abstrakta klasser, interface Flashcards
Vilka är objektorienterad programmerings tre principer?
- Inkapsling
- Arv
- Polymorfism
När kan en abstrakt metod vara lämplig?
När alla subklasser måste implementera metoden
Hur definieras en abstrakt metod i superklassen?
public abstract metodNamn();
Inte { ] eller metodkropp.
Vilka krav ställs på klassen om man vill skriva abstrakta metoder?
att klassen också definieras som abstrakt
Hur skiljer sig abstrakta metoder från överskuggning?
vid abstrakta metoder tillhandahåller superklassen ingen implementation av metoden, vilket den gör vid överskuggning
Vad innebär bindning?
att koppla metodanropet till metodkroppen
Vad är abstrakta klasser en kombination av?
vanlig klass och interface
Vad skiljer en abstrakt klass från en konkret (vanligt) klass?
en abstrakt klass ska alltid ärvas och man kan därför inte skapa instanser av den
Vad är en konkretklass?
en klass som intet innhåller abstrakta metoder eller är en interface
Vad är ett interface?
ett interface är en rent abstrakt klass som helst saknar implementation
vad är default metoden i ett interface?
publika abstrakta metoder
hur funkar interface?
som ett konkrakt, alla klasser som implementerar interface går med på att de ska ha ett visst beteende
hur deklareras interface?
med nyckelordet “interface” istället för “klass”, t ex
public interface namn{
}
kan metoder i ett interface någonsin innehålla implementation?
ja om metoden inte är abstrakt
vilka regler finns för interface?
- alla metoder är implicit public och abstract oavsett om nyckelorden anges
- instantsvariabler blir implicit public static final, eftersom endast konstanter är tillåtna som variabler
Kan ett interface implementera ett annat interface?
nja, ett arv kan implementera ett annat interface men det görs med nyckelordet extends
Vad skiljer generalisering av interface från arv?
ett interface kan inte ärvas av en vanlig klass, utan används med nyckelordet “implements” iställer för arvets “extends”
vad innebär nyckelordet implements?
att en klass implementerar ett interface och därmed binder till att tillhandahåll implementation (kropp) till samtliga metoder som är definierade i interfacet
vilka krav ställer interfacet på klassen som implementerar den?
att klassen skriver kod till samtliga metoder i interfacet
Vilka fördelar finns med interface?
- olika klasser utan koppling får samma beteende (polymorfism)
- sära på implementation och specifikation (inkapsling)
- förberedda applikation för at bygga på nya komponenter och objekt som funkar på samma sätt
- flexibel kod
hur skriver man om en klass både ärver en superklass och ärver ett eller flera interface?
först definiera superklassen, sedan implementera interface och ifall det är flera interface separera dem med “ , “
är multipel ärvning tillåtet för interface?
ja, med nyckelordet extends och ett kommatecken(‘ , ‘) mellan varje interface
Vad har abstrakt class och interface gemensamt?
- kan inte skapa objekt
- ## innehåller publika abstrakta metoder
hur skiljer sig abstrakta klasser och interface åt?
- interface används för TOTAL abstraktion medan abstrakta klassen enbart för delvis abstraktion
- metoder i interfacet saknar implementation (kropp) men metoder i abstrakta klassen kan ha viss implementetation
- abstrakta klasser är till för att ärvas och kan bara ärva en konkret -eller abstrakt klass medan interface inte kan ärva konkreta klasser