Sobes.tech
Junior

Kādi klases tipi pastāv Java?

sobes.tech AI

Atbilde no AI

Java ir šādi galvenie klases tipi:

  1. Standarta klase (Standard Class)

    • Var saturēt laukus, metodes, konstruktorus.
    • Var manto citiem klasēm, ja nav deklarēta kā final.
    • Var realizēt interfeisus.
    • Deklarē ar piekļuves modifikatoriem (public, protected, default, private).
  2. Abstrakta klase (Abstract Class)

    • Deklarēta ar vārdu abstract.
    • Tieši nevar tikt instancēta.
    • Var saturēt abstraktus (bez realizācijas) un parastus metodes.
    • Domāta mantošanai; apakšklases jānodrošina abstraktu metožu realizācija.
    // Abstrakta klase figūras definīcijai
    abstract class Shape {
        abstract double area(); // Abstrakta metode laukuma aprēķinam
    
        void display() { // Parasta metode
            System.out.println("This is a shape.");
        }
    }
    
  3. Finala klase (Final Class)

    • Deklarēta ar vārdu final.
    • Nav iespējams manto citiem klasēm.
    • Lieto, lai novērstu klases paplašināšanu, nodrošinātu drošību vai nemainīgu realizāciju.
    // Finala klase, kuras mantošana nav atļauta
    final class ImmutableString {
        private final String value;
    
        public ImmutableString(String value) {
            this.value = value;
        }
    
        public String getValue() {
            return value;
        }
    }
    
  4. Enum (Enum)

    • Īpašs klases tips, paredzēts fiksēta konstantes kopuma pārstāvībai.
    • Deklarē ar vārdu enum.
    • Enum konstantes pēc noklusējuma ir public static final.
    • Var saturēt laukus, metodes un konstruktorus (private slēpts).
    // Nedēļas dienu enum
    enum DayOfWeek {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    
  5. Anonīmas (Anonymous Class)

    • Klase bez nosaukuma, kas tiek izveidota un instancēta vienlaikus.
    • Bieži tiek izmantotas interfeisu realizācijai vai klases paplašināšanai "uz vietas", kad nepieciešama vienreizēja lietošana.
    • Nav iespējams deklarēt skaidrus konstruktorus.
    // Anonīmas klases izveide, realizējot Runnable interfeisu
    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("Running in an anonymous class.");
        }
    };
    
  6. Iekšējās (Nested Class)

    • Klases, kas deklarētas citas klases iekšpusē.
    • Ir divu veidu:
      • Statiskās iekšējās klases (Static Nested Class): deklarētas ar static. Tām nav tiešas piekļuves ārējās klases nestatiskajiem locekļiem. Tiek instancētas kā parastas klases.
      • Iekšējās klases (Inner Class): nav deklarētas kā static. Tām ir piekļuve visiem ārējās klases locekļiem, ieskaitot private. Prasa ārējās klases instanci, lai izveidotu savu instanci.
    // Ārējā klase
    class OuterClass {
        private String outerField = "Outer";
    
        // Statiskā iekšējā klase
        static class StaticNestedClass {
            void display() {
                System.out.println("Inside StaticNestedClass.");
                // Nav tiešas piekļuves outerField
            }
        }
    
        // Iekšējā klase
        class InnerClass {
            void display() {
                System.out.println("Inside InnerClass. outerField: " + outerField); // Pieeja outerField
            }
        }
    }
    
  7. Rekordklases (Record - no Java 14)

    • Deklarētas ar vārdu record.
    • Paredzētas datu glabāšanai. Kompilators automātiski ģenerē konstruktoru, piekļuves metodes (accessor methods), equals(), hashCode() un toString().
    • Rekorda lauki ir neizmaināmi (final).
    // Rekords, kas attēlo punktu 2D telpā
    record Point(int x, int y) {
        // Kompilators ģenerēs konstruktoru, metodes x(), y(), equals(), hashCode(), toString()
    }