SZZ 02 Flashcards

1
Q

Nástroje generického programování: dědičnost, rozhraní, polymorfismus, generická implementace abstraktních datových typů – třídy s typovým parametrem

A

Dědičnost
Rozhraní
Polymorfismus
Generická implementace abstraktních datových typů - Třídy s typovým parametrem

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

Dědičnost

A
  • > Přidání vlastností k rodičovské třídě (nebo překrytí stávajících)
  • > V javě klíčové slovo extends
  • > Potomek musí volat v konstruktoru konstruktor předka klíčovým slovem super() (výjimka je implicitní konstruktor)
  • > Možnost vytvoření abstraktní třídy s abstraktními metodami, v takovém případě explicitně očekáváme, že je potomek překryje
  • > Identifikátor final zabrání k překrytí metody
  • > Jako typ předka mohu použít instanci potomka
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Rozhraní

A

Obsahuje hlavičky metod, které očekáváme, že třída implementující rozhraní metody implementuje (v javě klíčové slovo implements)

Třída může implementovat více rozhraní (narozdíl od dědění)

Jako typ rozhraní používám konkrétní třídu, které rozhraní implemetuje

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

Polymorfismus

A

Instanci potomka mohu použít všude, kde očekávám předka. Při kompilaci nemohu určit, který konkrétní kód metody poběží.

Person p = new Teacher();
p.speak(); -> zavolá metodu učitele, ne osoby

+ Mohu mít i statický polymorfismus
Get(a, b)
Get(a)

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

Generická implementace abstraktních datových typů - Třídy s typovým parametrem

A

Problém: Chci implementovat například zásobník, aby pracoval s libovolnou třídou

Řešení 1: Pracovat s třídou Object. Pak ale můžu kombinovat různé datové typy dohromady.

Řešení 2: Pracovat s typovým parametrem. Poté při inicializaci zásobníku uvedu konrétní třídu, pro kterou zásobník vytvářím. Do zásobníku pak mohu vkládat a získávat instance pouze uvedeného typu.

Stack implementace
Stack konkrétní instance

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