Sobes.tech
Junior

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

sobes.tech AI

AIден жооп

Javaда төмөнкү негизги класстардын түрлөрү бар:

  1. Жалпы (Standard Class)

    • Поля, ыкмалар, конструкторлорду камтышы мүмкүн.
    • final деп жарыяланбаган болсо, башка класстар мурас кылышы мүмкүн.
    • Интерфейстерди ишке ашыра алат.
    • Кирүү модификаторлору менен жарыяланат (public, protected, default, private).
  2. Абстракт (Abstract Class)

    • abstract сөзү менен жарыяланат.
    • Түз түз инстанциялай албайт.
    • Абстракттык ыкмалар (реализациясыз) жана жөнөкөй ыкмалар болушу мүмкүн.
    • Мурас алуу үчүн; подкласстар абстракттык ыкмалардын реализациясын камсыз кылышы керек.
    // Чекит үчүн абстракттык класс
    abstract class Shape {
        abstract double area(); // Аянты эсептөө үчүн абстракттык ыкма
    
        void display() { // Жөнөкөй ыкма
            System.out.println("This is a shape.");
        }
    }
    
  3. Акыркы (Final Class)

    • final сөзү менен жарыяланат.
    • Башка класстар мурас кыла албайт.
    • Класс кеңейтүүнү алдын алуу, коопсуздукту камсыздоо же өзгөртүлбөгөн ишке ашырууну камсыздоо үчүн колдонулат.
    // Мурунку классты мурас кылууга болбойт
    final class ImmutableString {
        private final String value;
    
        public ImmutableString(String value) {
            this.value = value;
        }
    
        public String getValue() {
            return value;
        }
    }
    
  4. Энум (Enum)

    • Белгилүү константтардын так санына арналган атайын класс түрү.
    • enum сөзү менен жарыяланат.
    • Энума константтар алдын ала public static final болуп саналат.
    • Поля, ыкмалар жана конструкторлорду камтышы мүмкүн (private скрылган модификатору менен).
    // Апта күндөрү үчүн энум
    enum DayOfWeek {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    
  5. Анонимдик (Anonymous Class)

    • Аты жок класс, ал түзүлүп, бир эле учурда инстанцияланат.
    • Интерфейстерди ишке ашыруу же класс кеңейтүү үчүн колдонулат "жылдам" колдонуу үчүн, бир жолу колдонуу керек болсо.
    • Ачык конструкторлору болбойт.
    // Runnable интерфейсин ишке ашыган анонимдик класс түзүү
    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("Running in an anonymous class.");
        }
    };
    
  6. Ички (Nested Class)

    • Башка класстын ичинде жарыяланган класстар.
    • Ички түрлөрү:
      • Статикалык ички класстар (Static Nested Class): static сөзү менен жарыяланат. Түздөн-түз сырткы класстын эмес, анын статикалык мүчөлөрүнө кире албайт. Жөнөкөй класс катары инстанцияланат.
      • Ички класстар (Inner Class): static деп жарыяланбаган. Бардык мүчөлөргө, анын ичинде privateга да кире алат. Өзүнүн инстанциясын түзүү үчүн сырткы класстын экземпляри керек.
    // Чыгарган класс
    class OuterClass {
        private String outerField = "Outer";
    
        // Статикалык ички класс
        static class StaticNestedClass {
            void display() {
                System.out.println("Inside StaticNestedClass.");
                // outerField түздөн-түз жеткиликсиз
            }
        }
    
        // Ички класс
        class InnerClass {
            void display() {
                System.out.println("Inside InnerClass. outerField: " + outerField); // outerFieldга жетүү
            }
        }
    }
    
  7. Рекорддор (Record - Java 14төн баштап)

    • record сөзү менен жарыяланат.
    • Маалымат сактоо үчүн; компилятор автоматтык түрдө конструктор, жеткиликтүү методдор (accessor methods), equals(), hashCode() жана toString() түзөт.
    • Рекорддун талаалары автоматтык түрдө final болот.
    // 2D кеңістиктеги нүктө үчүн рекорд
    record Point(int x, int y) {
        // Компилятор конструктор, x(), y(), equals(), hashCode(), toString() түзөт
    }