Sobes.tech
Junior

Ի՞նչ տեսակների դասեր կան Java-ում։

sobes.tech AI

Պատասխան AI-ից

  • Հաճախակի (reguliar / կոնկրետ) դասեր: Կարող են լինել ինստանցիացված, պարունակում են դաշտեր, մեթոդներ, կոնստրուկտորներ:
  • Աբստրակտ դասեր: Չեն կարող ուղղակի ինստանցիրվել: Կարող են պարունակել աբստրակտ մեթոդներ (չունեն իրականացման) և սովորական մեթոդներ: Օգտագործվում են ընդհանուր հատկանիշների սահմանման համար ենթակլասների համար:
    abstract class AbstractClass {
        abstract void abstractMethod(); // Աբստրակտ մեթոդ
        void regularMethod() {
            System.out.println("Սովորական մեթոդ");
        }
    }
    
  • Ներքին դասեր (nested classes): Հայտարարվում են այլ դասի ներսում: Կարող են լինել:
    • Ստատիկ ներքին դասեր (static nested classes): Չեն ունենա մուտք դեպի արտաքին դասի ոչ-ստատիկ անդամներ: Ստեղծվում են առանց արտաքին դասի օրինակակի:
      class OuterClass {
          static class StaticNestedClass {
              // ...
          }
      }
      
    • Ներքին դասեր (inner classes): ունեն մուտք դեպի բոլոր անդամներ արտաքին դասի (ներառյալ մասնավորները): Կապված են արտաքին դասի օրինակակի հետ:
      class OuterClass {
          class InnerClass {
              // Մուտք ունի OuterClass անդամներին
          }
      }
      
    • Տեղական դասեր (local classes): Հայտարարվում են մեթոդի, ցիկլի կամ if բլոկի ներսում: Մուտքը սահմանափակ է նրանց հայտարարած տարածքով:
      class OuterClass {
          void someMethod() {
              class LocalClass {
                  // Տեղական հայտարարություն
              }
              LocalClass obj = new LocalClass();
          }
      }
      
    • Անանուն դասեր (anonymous classes): Անուն չունեցող, ստեղծվում են միաժամանակ հայտարարելու կամ ինստանցիացնելու ժամանակ: Օգտագործվում են մեկանգամյա օգտագործման համար:
      interface MyInterface {
          void myMethod();
      }
      
      MyInterface anon = new MyInterface() {
          @Override
          public void myMethod() {
              System.out.println("Անանուն դաս");
          }
      };
      
  • Տվյալների պահոցներ (records) (Java 14-ից սկսած): Կոմպակտ սինտաքսիս անորոշ դասեր հայտարարելու համար, որոնք նախատեսված են տվյալների պահեստավորման համար:
    record Person(String name, int age) {
        // Ավտոմատ գեներացված կոնստրուկտոր, գետեր, հավասարության, hashCode(), toString()
    }