Junior
Jaké jsou typy tříd v Javě?
sobes.tech AI
Odpověď od AI
- Obvyklé (regulární / konkrétní) třídy: Mohou být instancovány, obsahují pole, metody, konstruktory.
- Abstraktní třídy: Nemohou být přímo instancovány. Mohou obsahovat abstraktní metody (bez implementace) a běžné metody. Používají se k definování společných vlastností pro podtřídy.
abstract class AbstractClass { abstract void abstractMethod(); // Abstraktní metoda void regularMethod() { System.out.println("Běžná metoda"); } } - Vnořené třídy (nested classes): Jsou deklarovány uvnitř jiné třídy. Mohou být:
- Statické vnořené třídy (static nested classes): Nemají přístup k nestatickým členům vnější třídy. Jsou vytvářeny bez instance vnější třídy.
class OuterClass { static class StaticNestedClass { // ... } } - Vnitřní třídy (inner classes): Mají přístup ke všem členům vnější třídy (včetně soukromých). Jsou vázány na instanci vnější třídy.
class OuterClass { class InnerClass { // Má přístup ke členům OuterClass } } - Lokální třídy (local classes): Jsou deklarovány uvnitř metody, cyklu nebo if bloku. Přístup k nim je omezen na jejich deklarované pole.
class OuterClass { void someMethod() { class LocalClass { // Lokální } LocalClass obj = new LocalClass(); } } - Anonymní třídy (anonymous classes): Bez jména, jsou vytvářeny současně s deklarací nebo instancováním. Používají se pro jednorázové použití.
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Anonymní třída"); } };
- Statické vnořené třídy (static nested classes): Nemají přístup k nestatickým členům vnější třídy. Jsou vytvářeny bez instance vnější třídy.
- Záznamové třídy (records) (od Java 14): Kompaktní syntaxe pro deklaraci neměnných tříd určených k ukládání dat (POJO).
record Person(String name, int age) { // Automaticky generované konstruktor, gettery, equals(), hashCode(), toString() }