Sobes.tech
Junior

Кай метод override деп эсептелет (overriding)?

sobes.tech AI

AIден жооп

Метод деп эсептелет, ал бала класста ошол эле сигнатурага (методдун аты, параметрлердин саны жана түрлөрү ошол эле тартипте) ээ метод жарыяланган учурда, ал ата-энесинин классынын методун кайра аныктайт. Мындан тышкары:

  1. Ата-эненин классындагы метод final (же башка тилдерде эквивалентдүү модификатор) деп жарыяланбашы керек, бул кайра аныктоого тыюу салат.
  2. Бала класста кайра аныкталган методдун жеткиликтүүлүк деңгээли ата-эненин классынын методунан катуу болбошу керек.
  3. Кайра аныкталган метод ошол эле типти же коварианттык типти (баштапкы типтин субтипин) кайтаруусу мүмкүн.
  4. Кайра аныкталган метод ата-эненин методунда белгиленгенден кеңири (же ылайыктуу эмес) исключениелерди чыгара албайт.
  5. Статикалык методдор кайра аныктала албайт, гана жашырылышы (hidden) мүмкүн.

Кайра аныкталган методду ата-эненин классына шилтеме аркылуу, бирок бала класстын объектисин колдонуп чакырганда, бала классынын версиясы ишке ашырылат (полиморфизм).

// Java мисалы

class Parent {
    public void display() { // Ата класстагы метод
        System.out.println("Parent display");
    }

    // final void cannotOverride() { ... } // Бул метод кайра аныктала албайт
}

class Child extends Parent {
    @Override // @Override белгилөөсү компиляторго метод чын эле кайра аныкталганын текшерүүгө жардам берет
    public void display() { // Кайра аныкталган метод - ошол эле сигнатура
        System.out.println("Child display");
    }
}