Sobes.tech
Junior

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

sobes.tech Süni İntellekt

AI-dan cavab

  • Adi (regular / concrete) sinflar: İstifadə oluna bilər, sahələr, metodlar, konstruktorlar ehtiva edir.
  • Mürəkkəb sinflər (abstract classes): Birbaşa istifadə oluna bilməz. Onlar abstrakt metodlar (implementasiya olmadan) və adi metodlar ehtiva edə bilər. Alt sinflər üçün ümumi xüsusiyyətləri müəyyən etmək üçün istifadə olunur.
    abstract class AbstractClass {
        abstract void abstractMethod(); // Abstrakt metod
        void regularMethod() {
            System.out.println("Adi metod");
        }
    }
    
  • İç içe sinflər (nested classes): Başqa bir sinf daxilində elan edilir. Onlar:
    • Statik iç içə sinflər (static nested classes): Xarici sinfin qeyri-statik üzvlərinə daxil ola bilməzlər. Xarici sinfin nümunəsi olmadan yaradılırlar.
      class OuterClass {
          static class StaticNestedClass {
              // ...
          }
      }
      
    • Daxili sinflər (inner classes): Bütün xarici sinif üzvlərinə (xüsusən də şəxsi üzvlərə) daxil ola bilər. Xarici sinif nümunəsinə bağlıdırlar.
      class OuterClass {
          class InnerClass {
              // OuterClass üzvlərinə daxil olur
          }
      }
      
    • Yerli sinflər (local classes): Metod, dövr və ya if blokunun daxilində elan edilir. Onların daxil olma hüququ elan olunduqları sahə ilə məhdudlaşır.
      class OuterClass {
          void someMethod() {
              class LocalClass {
                  // Yerli
              }
              LocalClass obj = new LocalClass();
          }
      }
      
    • Anonim sinflər (anonymous classes): Adı olmayan, eyni zamanda elan və ya nümunə ilə yaradılır. Bir dəfəlik istifadə üçün.
      interface MyInterface {
          void myMethod();
      }
      
      MyInterface anon = new MyInterface() {
          @Override
          public void myMethod() {
              System.out.println("Anonim sinif");
          }
      };
      
  • Yazı sinfləri (records) (Java 14-dən): Məlumatların saxlanması üçün nəzərdə tutulmuş dəyişməz sinflər üçün kompakt sintaksis.
    record Person(String name, int age) {
        // Avtomatik yaradılan konstruktor, getterlər, equals(), hashCode(), toString()
    }