Flashcards: Compile vs Runtime i OOP (Java)

(12 cards)

1
Q

Vad avgör om kod kompilerar i Java?

A

Compilatorn kollar statisk typ: metoder & arvshierarki.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Vad avgör vilken metod som körs?

A

JVM kollar dynamisk typ: vilken implementation objektet faktiskt har (dynamisk bindning).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Kan man skapa en instans av en abstrakt klass eller ett interface?

A

Nej. new A() där A är abstract/interface → compile error.
Men du kan ha en referens av den typen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Är uppåt-cast (subklass → superklass) alltid giltig?

A

Ja. Kompilerar och körs alltid.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Är nedåt-cast (superklass → subklass) alltid giltig?

A

Nej. Kompilerar om de är i samma hierarki, men kan ge ClassCastException om objektet inte är rätt typ.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Vad händer om den statiska typen inte har metoden?

A

Compile error, även om den dynamiska typen har den.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Interface-referens: vilka metoder kan anropas?

A

Bara de metoder som finns i interfacet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Overriding vs Overloading

A

Overriding = samma signatur → dynamisk bindning.
Overloading = olika parametrar → statisk bindning (väljs vid kompilering).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vanlig tenta-fälla: C c = new A(); där C extends A

A

Compile error: statisk typ C kan inte peka på A-objekt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Vanlig tenta-fälla: IA a = new A(); där A är abstract och implementerar IA

A

Compile error: abstract klass kan inte instansieras.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Vanlig tenta-fälla: B b = (B) new A();

A

Compile OK, men runtime crash: ClassCastException.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Vanlig tenta-fälla: IX x = new C(); A a = x;

A

Compile error: IX och A är inte kompatibla.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly