Sobes.tech
Junior

Aké typy tried v Jave existujú?

sobes.tech AI

Odpoveď od AI

  • Obyčajné (regulárne / konkrétne) triedy: Môžu byť inštanciované, obsahujú polia, metódy, konštruktory.
  • Abstraktné triedy: Nemôžu byť inštancované priamo. Môžu obsahovať abstraktné metódy (bez implementácie) a bežné metódy. Používajú sa na definovanie spoločných vlastností pre podtriedy.
    abstract class AbstractClass {
        abstract void abstractMethod(); // Abstraktná metóda
        void regularMethod() {
            System.out.println("Bežná metóda");
        }
    }
    
  • Vnorené triedy (nested classes): Vyhlasujú sa vo vnútri inej triedy. Môžu byť:
    • Statické vnorené triedy (static nested classes): Nemajú prístup k nestatickým členom vonkajšej triedy. Sú vytvorené bez inštancie vonkajšej triedy.
      class OuterClass {
          static class StaticNestedClass {
              // ...
          }
      }
      
    • Vnorené triedy (inner classes): Majú prístup ku všetkým členom vonkajšej triedy (vrátane súkromných). Sú spojené s inštanciou vonkajšej triedy.
      class OuterClass {
          class InnerClass {
              // Má prístup k členom OuterClass
          }
      }
      
    • Lokálne triedy (local classes): Vyhlasujú sa vo vnútri metódy, cyklu alebo bloku if. Prístup k nim je obmedzený oblasťou ich vyhlásenia.
      class OuterClass {
          void someMethod() {
              class LocalClass {
                  // Vyhlásená lokálne
              }
              LocalClass obj = new LocalClass();
          }
      }
      
    • Anonymné triedy (anonymous classes): Bez mena, vytvárajú sa súčasne s vyhlásením alebo inštanciovaním. Používajú sa na jednorazové použitie.
      interface MyInterface {
          void myMethod();
      }
      
      MyInterface anon = new MyInterface() {
          @Override
          public void myMethod() {
              System.out.println("Anonymná trieda");
          }
      };
      
  • Triedy-záznamy (records) (od Java 14): Kompaktná syntax na vyhlásenie nemenných tried, určených na ukladanie dát (POJO).
    record Person(String name, int age) {
        // Automaticky generované konštruktory, gettery, equals(), hashCode(), toString()
    }