F18 - Arv Flashcards
Vad står OOP för?
Object-Orienterad Programming
Vad är ett nyckelord?
Reserverat ord som inte kan användas som identifierare?
Vad är en identifierare?
Namn på variabel, namn eller klass
Vad är klassmedlemmar och vilka är dessa?
Alla som ingår i en klass, det vill säga
- Instansvariabler
- Konstruktor
- Övriga metoder
Vad är skillnaden mellan implicit och explicit?
Explicit är uttryckligen skrivet, t ex:
double a = (double)3;
medan implicit är indirekt skrivet, t ex:
double a = 3;
Vad är inkapsling/encapsulation?
Kapsla in data/metoder i entity-klass och dölja data/metoder för andra klasser
Vad innebär arv?
att skapa ny klass genom från redan existerande klasser
Vad kallas en klass härled ur ett annan klass?
Subklass
Vad är en superklass?
Klassen subklassen ärver
Vad är arv bra för?
Minskar behovet av att skriva ny kod
Hur uttrycks arv?
Med nyckelordet extend
Vad betyder:
public class A Extends B {
}
Att klass A ärver klass B
Vilken är superklass vs subklass enligt:
public class A Extends B {
}
Klass A är subklass till klass B, som är superklass
Vad innehåller klass A om den är subklass till klass B?
Alla metoder och instansvariabler som deklarerars i klass B
Vad kan klassen som ärver kallas?
Härledd klass
Vad måste klasserna vara vid arv?
- Konceptuellt relaterade till varandra
- En subklass ska vara en delmängd av en superklass
Vad innebär “är en”-regeln?
Om svaret på frågan “Är subklass en superklass” ja, kan arv tillämpas mellan objekten.
T ex “Är anställd (klass A) en Person (Klass B)? - Ja, alltså kan klass A ärva klass B.
Vilka är tre vanliga synlighetsmodifierare?
Private, public och protected
Vad innebär public?
Ger access till alla klasser
Vad innebär private?
Ger endast access inom klass den tillhör
Vad innebär protected?
Ger access till alla klasser i samma paket och subklasser i andra paket
Vad ingår inte i arv?
Konstruktor och privata instansvariabler
Vad är Object?
En superklass definierad i java
Vilka är subklassern till Object?
Alla, Objects ärv direkt eller indirekt av alla klasser
Vad innebär direkt arv?
Om en klass inte ärver en annan klass blir den automatiskt en subklass till Object
Vad innebär indirekt arv?
Om en klass ärver annan klass genom nyckelordet extrend, och klassen den ärver är en subklass av Objects, är det ett indirekt arv
Ge exempel på metoder i Object-klassen
- toString( ) som returnerar strängrepresentation av objektet
- public boolean equals(Objects obj) som returnerar True om Obj är samma som objektet (this) och annars returernar Falsee
Vilket nyckelord används om subklassen vill referera till sin direkta superklass?
Super( )
Vad händer om man kallar på Super( ) utan parameterar men superklassens konstruktor har parametrar?
Kompileringsfel, man måste skicka med värden
Hur anropas man en metod i superklassen, från subklassen med hjälp av “Super”?
super.Metodnamn( )
Vad betyder Polymorfism?
Mångformighet
Vad innebär Polymorfism?
att olika, men relaterade, objekt utför samma uppgift på olika sätt
Hur implementeras Polymorfism i Java?
- Metod-överskuggning
- Abstrakta klasser
- Interface
- Dynamisk bindning
Vad är en abstrakt klass?
En klass som ärvs och inte instansieras (dvs skapas objekt av)
Vad är abstrakta klasser bra för?
- Organisera klasser
- Skapa abstraktionsnivåer i klasshierarki
Vad i en klasshierkarki ska en abstrakt klass ligga?
Högt
Vad kan betraktas som inkomplett klass?
en abstrakt klass, den är inte självständigt användsbar utan är till för att ärvas
Vad innebär överskuggning?
- När man i en subklass ger en metod från superklassen en egen implementation
- att metoden från subklassen ska användas över metoden från superklassen
Hur implementeras överskuggning?
Genom att @Override skrivs innan metoden, som måste ha samma namn och argument som metoder den överskuggar
Hur fungerar abstraktionsnivå?
Man börjar med hög abtraktionsnivå och specialiserar, konkretiserar och specialiserar neråt.
Vad är abtrakta metoder?
när en abstrakt klass delegerar implementation av metod till subklass
När används abstrakta metoder?
När en abstrakt klass inte vet hur uppgiften ska lösas, men att den ska göras
Hur skrivs abstrakta metoder i Java?
I superklassen: med ; efter ( ) och med nyckelordet abstract mellan mellan synlighetsmodifierar och namn, t ex:
public abstract Shape( ); { //metodkropp }
I subklassen: som vanligt utan ; och abstract