Třídy, rozhraní; vnitřní třídy, anonymní vnitřní třídy, uzávěry.
Proměnné, statické proměnné, atributy, lokální proměnné, parametry, vázání jmen; halda, zásobník a prostor statických proměnných; primitivní typy a ukazatele, instance, ==
a equals
.
Metody, pozdní a brzká vazba metod, dvojité volání; statické metody a konstruktory.
Inkluzivní polymorfismus (vztah nadtyp/podtyp), subsumpce a substituční princip, kovariance a kontravariance, operátor instanceof
a přetypování.
Parametrický polymorfismus (generické třídy), typové parametry, hranice typových parametrů, instanciace generické třídy, ko- a kontravariance generických tříd.
Ad hoc polymorfismus: přetěžování metod a koerce.
Dědičnost, kaskádování konstruktorů, překrývání metod, stínění proměnných, abstraktní třídy a metody, klíčové slovo super
.
Skrývání implementace (zapouzdření), invarianty a aserce, zpřístupnění vnitřní reprezentace; problém rámce při dokumentování funkce tříd a metod.
Návrhové vzory tovární metoda, továrna, abstraktní továrna, stavitel, adaptér, dekorátor, proxy, stav, strategie, command, strom, interpretr, návštěvník, iterátor, pozorovatel, šablonová metoda, nulový objekt.
Imutabilita, funkcionální programování, funkce vyšších řádů (filter
, map
/transform
a fold
/reduce
); Google Guava, Functional Java.
Metaprogramování.
Použití vzorů v Java Např. zde