Sobes.tech
Middle

Abstrakt sinf va interfeys o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Abstract sinf — bu, amalga oshirilgan metodlar va amalga oshirilmagan (implementatsiya qilinmagan) metodlarni o'z ichiga olishi mumkin bo'lgan sinf. U meros olish uchun asos bo'lib xizmat qiladi va holat (maydonlar)ni o'z ichiga olishi mumkin.

Interfeys — bu, klassik tushunchada, amalga oshirilmagan metodlar to'plamini belgilovchi shartnoma. Interfeysni amalga oshiradigan sinf, uning barcha metodlarini amalga oshirishi shart.

Asosiy farqlar:

  • Abstract sinf, amalga oshirilgan va holatni o'z ichiga olishi mumkin, interfeys — faqat metodlarning imzolari (ba'zi tillarda, interfeyslar default metodlarni ham o'z ichiga olishi mumkin).
  • Bir sinf faqat bitta abstract sinfdan meros olishi mumkin, lekin bir nechta interfeyslarni amalga oshirishi mumkin.
  • Abstract sinf qisman amalga oshirishni ta'minlaydi, interfeys — faqat shartnoma.

Java misoli:

abstract class Animal {
    void eat() { System.out.println("Yemak"); }
    abstract void sound();
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("Chirp"); }
    public void fly() { System.out.println("Uchish"); }
}