Sobes.tech
Junior

Javaда кандай класстардын түрлөрү бар?

sobes.tech AI

AIден жооп

  • Жалпы (регулярдүү / такталган) класстар: Алар инстанцияланат, талаалары, ыкмалары, конструкторлору болот.
  • Абстракттуу класстар: Түздөн-түз инстанцияланбайт. Алар абстракттуу ыкмаларды (ишке ашырылбаган) жана жөнөкөй ыкмаларды камтышы мүмкүн. Төмөнкү класстар үчүн жалпы өзгөчөлүктөрдү аныктоо үчүн колдонулат.
    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төн баштап): Өзгөрбөс класстарды жарыялоо үчүн компакт синтаксис, маалыматтарды сактоо үчүн арналган (POJO):
    record Person(String name, int age) {
        // Автоматтык түрдө генерацияланган конструктор, геттерлер, equals(), hashCode(), toString()
    }