Sobes.tech
Junior

Java-da hansı sinif növləri mövcuddur?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da aşağıdakı əsas sinif növləri mövcuddur:

  1. Standart Sinif (Standard Class)

    • Sahələr, metodlar, konstruktorlar daxil edə bilər.
    • final kimi elan edilmədiyi halda, digər siniflər tərəfindən miras alına bilər.
    • İnterfeysləri həyata keçirə bilər.
    • Giriş modifikatorları ilə elan edilir (public, protected, default, private).
  2. Abstrakt Sinif (Abstract Class)

    • abstract açar sözü ilə elan edilir.
    • Birbaşa nümunə götürülə bilməz.
    • Abstrakt metodlar (implementasiyasız) və adi metodlar daxil edə bilər.
    • Miras üçün nəzərdə tutulub; alt siniflər abstrakt metodları həyata keçirməlidir.
    // Şəkil üçün abstrakt sinif
    abstract class Shape {
        abstract double area(); // Sahənin hesablanması üçün abstrakt metod
    
        void display() { // Adi metod
            System.out.println("Bu, bir şəkil.");
        }
    }
    
  3. Final Sinif (Final Class)

    • final açar sözü ilə elan edilir.
    • Digər siniflər tərəfindən miras alına bilməz.
    • Sinfi genişləndirmənin qarşısını almaq, təhlükəsizliyi təmin etmək və ya dəyişməzliyi təmin etmək üçün istifadə olunur.
    // Miras alınmayan final sinif
    final class ImmutableString {
        private final String value;
    
        public ImmutableString(String value) {
            this.value = value;
        }
    
        public String getValue() {
            return value;
        }
    }
    
  4. Enum (Enumlar)

    • Sabitlərin dəqiq bir dəstini təmsil etmək üçün nəzərdə tutulmuş xüsusi sinif növü.
    • enum açar sözü ilə elan edilir.
    • Enum sabitləri standart olaraq public static final-dır.
    • Sahələr, metodlar və konstruktorlar ola bilər (private gizli modifikatoru ilə).
    // Həftənin günləri üçün enum
    enum DayOfWeek {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    
  5. Anonim Siniflər (Anonymous Class)

    • Adı olmayan sinif, eyni zamanda yaradılır və nümunə götürülür.
    • İnterfeyslərin həyata keçirilməsi və ya siniflərin "canlı" genişləndirilməsi üçün tez-tez istifadə olunur, bir dəfəlik istifadə üçün.
    • Açıqlanan konstruktorlara malik ola bilməz.
    // Runnable interfeysini həyata keçirən anonim sinifin yaradılması
    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("Anonim sinifdə işləyir.");
        }
    };
    
  6. Nested Siniflər (Nested Class)

    • Digər sinif daxilində elan olunan siniflər.
    • İki növü var:
      • Statik Nested Siniflər (Static Nested Class): static ilə elan edilir. Xarici sinifin qeyri-statik üzvlərinə birbaşa daxil ola bilməz. Adətən adi sinif kimi nümunə götürülür.
      • İç Siniflər (Inner Class): static ilə elan edilmir. Xarici sinifin bütün üzvlərinə, o cümlədən private-yə daxil ola bilər. Öz nümunəsini yaratmaq üçün xarici sinifin nümunəsi tələb olunur.
    // Xarici sinif
    class OuterClass {
        private String outerField = "Outer";
    
        // Statik nested sinif
        static class StaticNestedClass {
            void display() {
                System.out.println("StaticNestedClass daxilində.");
                // Xarici sinifin outerField-ə birbaşa daxil olmur
            }
        }
    
        // İç sinif
        class InnerClass {
            void display() {
                System.out.println("InnerClass daxilində. outerField: " + outerField); // outerField-ə daxil olmaq
            }
        }
    }
    
  7. Qeydiyyat Sinifləri (Record - Java 14-dən etibarən)

    • record açar sözü ilə elan edilir.
    • Məlumatların saxlanması üçün nəzərdə tutulub. Kompilyator avtomatik olaraq konstruktoru, giriş metodlarını (accessor methods), equals(), hashCode()toString()-i yaradır.
    • Record sahələri avtomatik olaraq final-dır.
    // 2D məkanda nöqtəni təmsil edən qeydiyyat
    record Point(int x, int y) {
        // Kompilyator konstruktoru, metodlar x(), y(), equals(), hashCode(), toString() yaradacaq
    }