Junior
Milyen típusú osztályok léteznek Java-ban?
sobes.tech MI
Válasz az MI-től
A Java-ban a következő fő típusú osztályok léteznek:
-
Szokásos osztály (Standard Class)
- Tartalmazhat mezőket, metódusokat, konstruktorokat.
- Örökölhető más osztályoktól, kivéve ha
final-ként van deklarálva. - Megvalósíthat interfészeket.
- Hozzáférési módosítókkal (
public,protected,default,private) deklarálják.
-
Absztrakt osztály (Abstract Class)
- A
abstractkulcsszóval deklarálják. - Nem példányosítható közvetlenül.
- Tartalmazhat absztrakt (megvalósítás nélküli) és normál metódusokat.
- Öröklésre szánt; az alosztályoknak meg kell valósítaniuk az absztrakt metódusokat.
// Egy alakzat absztrakt osztálya abstract class Shape { abstract double area(); // Az absztrakt metódus az terület számítására void display() { // Normál metódus System.out.println("Ez egy alakzat."); } } - A
-
Végleges osztály (Final Class)
- A
finalkulcsszóval deklarálják. - Nem örökölhető más osztályoktól.
- Azt szolgálja, hogy megakadályozza az osztály kiterjesztését, biztonságot vagy változatlanságot biztosítson.
// Végleges osztály, amit nem lehet örökölni final class ImmutableString { private final String value; public ImmutableString(String value) { this.value = value; } public String getValue() { return value; } } - A
-
Enum (Enumerációk)
- Egy speciális osztálytípus, amely egy rögzített konstansok készletét reprezentálja.
- A
enumkulcsszóval deklarálják. - Az enum konstansok alapértelmezés szerint
public static final-ek. - Tartalmazhatnak mezőket, metódusokat és konstruktorokat (
private-val rejtve).
// A hét napjai enum enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } -
Névtelen osztályok (Anonymous Class)
- Név nélküli osztály, amely egyszerre jön létre és példányosítódik.
- Gyakran használják interfészek megvalósítására vagy osztályok "on the fly" bővítésére, amikor egyszeri használatra van szükség.
- Nem tartalmazhatnak explicit konstruktort.
// Egy Runnable interfészt megvalósító névtelen osztály létrehozása Runnable r = new Runnable() { @Override public void run() { System.out.println("Fut egy névtelen osztályban."); } }; -
Beágyazott osztályok (Nested Class)
- Osztályok, amelyeket egy másik osztályon belül deklarálnak.
- Két típusuk van:
- Statikus beágyazott osztályok (Static Nested Class):
static-ként deklarálják. Nincs közvetlen hozzáférés a külső osztály nem-statikus tagjaihoz. Általában normál osztályként példányosítják. - Belső osztályok (Inner Class): nem
static-ként deklarálják. Minden taghoz hozzáférnek a külső osztálynak, beleértve aprivate-t is. Egy példányt igényelnek a külső osztályból.
- Statikus beágyazott osztályok (Static Nested Class):
// Külső osztály class OuterClass { private String outerField = "Outer"; // Statikus beágyazott osztály static class StaticNestedClass { void display() { System.out.println("A StaticNestedClass belsejében."); // Nincs közvetlen hozzáférés az outerField-hez } } // Belső osztály class InnerClass { void display() { System.out.println("Az InnerClass belsejében. outerField: " + outerField); // Hozzáférés az outerField-hez } } } -
Rekord osztályok (Record - Java 14-től)
- A
recordkulcsszóval deklarálják. - Adatok tárolására szolgálnak. A fordító automatikusan generálja a konstruktort, az adathozzáférő metódusokat (
accessor methods), azequals(),hashCode()éstoString()metódusokat. - A rekord mezői implicit módon
final-ek.
// 2D pont reprezentálására szolgáló rekord record Point(int x, int y) { // A fordító generálja a konstruktort, az x(), y(), equals(), hashCode(), toString() metódusokat } - A