Sobes.tech
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");
          }
      };
      
  • 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()
    }