Sobes.tech
Junior

Aké typy tried v Jave existujú?

sobes.tech AI

Odpoveď od AI

V Jave existujú nasledujúce hlavné typy tried:

  1. Bežné (Standard Class)

    • Môžu obsahovať polia, metódy, konštruktory.
    • Môžu byť dediť inými triedami, ak nie sú deklarované ako final.
    • Môžu implementovať rozhrania.
    • Sú deklarované s prístupovými modifikátormi (public, protected, default, private).
  2. Abstraktné (Abstract Class)

    • Deklarované kľúčovým slovom abstract.
    • Nemôžu byť priamo inštancované.
    • Môžu obsahovať abstraktné metódy (bez implementácie) a bežné metódy.
    • Sú určené na dedenie; podtriedy musia poskytnúť implementáciu abstraktných metód.
    // Abstraktná trieda pre tvar
    abstract class Shape {
        abstract double area(); // Abstraktná metóda výpočtu plochy
    
        void display() { // Bežná metóda
            System.out.println("This is a shape.");
        }
    }
    
  3. Konečné (Final Class)

    • Deklarované kľúčovým slovom final.
    • Nemôžu byť dediť inými triedami.
    • Používajú sa na zabránenie rozšírenia triedy, zabezpečenie bezpečnosti alebo nemennosti implementácie.
    // Konečná trieda, ktorú nemožno dediť
    final class ImmutableString {
        private final String value;
    
        public ImmutableString(String value) {
            this.value = value;
        }
    
        public String getValue() {
            return value;
        }
    }
    
  4. Enumy (Enum)

    • Špeciálny typ triedy určený na reprezentáciu pevne stanoveného počtu konštánt.
    • Deklarované kľúčovým slovom enum.
    • Konštanty enumu sú predvolene public static final.
    • Môžu mať polia, metódy a konštruktory (s skrytým modifikátorom private).
    // Výber dní v týždni
    enum DayOfWeek {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    
  5. Anonymné (Anonymous Class)

    • Trieda bez mena, ktorá sa vytvára a inštanciuje súčasne.
    • Často sa používajú na implementáciu rozhraní alebo rozšírenie tried "za behu", keď je potrebné jednorazové použitie.
    • Nemôžu mať jasné konštruktory.
    // Vytvorenie anonymnej triedy implementujúcej rozhranie Runnable
    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("Running in an anonymous class.");
        }
    };
    
  6. Vnorené (Nested Class)

    • Triedy deklarované vnútri inej triedy.
    • Existujú dva typy:
      • Statické vnorené triedy (Static Nested Class): deklarované s kľúčovým slovom static. Nemajú prístup k nestatickým členom vonkajšej triedy priamo. Inštancujú sa ako bežné triedy.
      • Vnorené triedy (Inner Class): nie sú deklarované ako static. Majú prístup ku všetkým členom vonkajšej triedy, vrátane private. Vyžadujú inštanciu vonkajšej triedy na vytvorenie svojej inštancie.
    // Vonkajšia trieda
    class OuterClass {
        private String outerField = "Outer";
    
        // Statická vnorená trieda
        static class StaticNestedClass {
            void display() {
                System.out.println("Inside StaticNestedClass.");
                // Priamy prístup k outerField nie je možný
            }
        }
    
        // Vnorená trieda
        class InnerClass {
            void display() {
                System.out.println("Inside InnerClass. outerField: " + outerField); // Prístup k outerField
            }
        }
    }
    
  7. Rekordové triedy (Record - od Java 14)

    • Deklarované kľúčovým slovom record.
    • Určené na ukladanie dát. Kompilátor automaticky generuje konštruktor, metódy prístupu k poliam (accessor methods), equals(), hashCode() a toString().
    • Polia rekordu sú implicitne final.
    // Rekord na reprezentáciu bodu v 2D priestore
    record Point(int x, int y) {
        // Kompilátor vygeneruje konštruktor, metódy x(), y(), equals(), hashCode(), toString()
    }