Junior
Milyen típusú osztályok léteznek Java-ban?
sobes.tech MI
Válasz az MI-től
- Szokásos (rendes / konkrét) osztályok: Példányosíthatók, tartalmaznak mezőket, metódusokat, konstruktorokat.
- Absztrakt osztályok: Nem példányosíthatók közvetlenül. Tartalmazhatnak absztrakt metódusokat (megvalósítás nélkül) és normál metódusokat. Általános jellemzők meghatározására használják az alkönyvtárak számára.
abstract class AbstractClass { abstract void abstractMethod(); // Absztrakt metódus void regularMethod() { System.out.println("Normál metódus"); } } - Beágyazott osztályok (nested classes): Egy másik osztályon belül vannak deklarálva. Lehetnek:
- Statikus beágyazott osztályok (static nested classes): Nem férnek hozzá a nem-statikus tagokhoz a külső osztályban. Külső osztály példány nélkül jönnek létre.
class OuterClass { static class StaticNestedClass { // ... } } - Belső osztályok (inner classes): Minden külső osztály taghoz hozzáférnek (beleértve a privátokat is). A külső osztály példányához kötöttek.
class OuterClass { class InnerClass { // Hozzáfér a OuterClass tagjaihoz } } - Helyi osztályok (local classes): Egy metódus, ciklus vagy if blokk belsejében vannak deklarálva. Hozzáférésük a deklarációs területükre korlátozott.
class OuterClass { void someMethod() { class LocalClass { // Helyi } LocalClass obj = new LocalClass(); } } - Névtelen osztályok (anonymous classes): Név nélküliek, ugyanakkor a deklarációval vagy példányosítással együtt jönnek létre. Egyszeri használatra.
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Névtelen osztály"); } };
- Statikus beágyazott osztályok (static nested classes): Nem férnek hozzá a nem-statikus tagokhoz a külső osztályban. Külső osztály példány nélkül jönnek létre.
- Rekord osztályok (records) (Java 14-től): Kompakt szintaxis az állandó adatok tárolására szánt osztályok deklarálásához.
record Person(String name, int age) { // Automatikusan generált konstruktor, getterek, equals(), hashCode(), toString() }