Sobes.tech
Middle

Интерфейсти кай колдонуш керек жана кайсы учурда абстракттуу класс?

sobes.tech AI

AIден жооп

Биз негизги функциялар жана жалпы абалды түзүү үчүн абстракттуу классты колдонобуз, ал подкласстар мурас алса болот. Ал жалпы методдор менен жана кайра жазылышы керек болгон методдор менен иштөө үчүн ылайыктуу. Абстракттуу класс талаалар жана конструкторлорду камтышы мүмкүн.

// Абстракттуу класс
abstract class Animal {
    String name;

    public Animal(String name) {
        this.name = name;
    }

    abstract void makeSound(); // Абстракттуу метод

    void eat() { // Ишке ашырылган метод
        System.out.println(name + " жейт.");
    }
}

Интерфейсти колдонуп, класстар аткаруучу методдордун топтомун сүрөттөгөн келишимди аныктайбыз. Бул көптөгөн жүрүм-турумду (көп мурас) алуу үчүн ылайыктуу. Интерфейс күйү (өрүштөр, константалардан башка) жана конструкторлорду камтыбайт (Java 8ге чейин).

// Интерфейс
interface Flyable {
    void fly(); // Аныкталган метод
}

Аермалардын салыштырмалуу таблицасы:

Өзгөчөлүк Абстракттуу класс Интерфейс
Мүчөлөрдүн түрү Поля, абстракттуу жана конкреттүү методдор, конструкторлор Константтар, абстракттуу методдор (өзүнчө), статикалык жана default методдор (Java 8ден баштап)
Методдордун ишке ашырылышы Методдор ишке ашырылган болушу мүмкүн Жай гана абстракттуу методдор Java 8ге чейин, Java 8ден баштап - static жана default
Жагдайы Жагдайы (поле) болушу мүмкүн Жагдайы (поля) болбойт
Мурас алуу Бирдиктүү мурас Көптөгөн ишке ашыруу
Колдонуу "-а" (is-a) - негизги түрү "-га" (has-a) - жүрүм-турум келишими