Sobes.tech
Junior — Middle

Трябва ли да предоставите реализация за методите на интерфейса в неговия базов клас?

sobes.tech AI

Отговор от AI

В Android (и в Java/Kotlin като цяло) интерфейсът определя само договор — набор от методи, които трябва да бъдат реализирани от класа. В класовете, реализиращи интерфейса, тези методи трябва да бъдат реализирани.

Обаче, ако имате базов клас, който реализира интерфейса, можете да предоставите в него базова реализация на методите на интерфейса. Това е полезно, ако няколко подкласса ще използват една и съща логика, за да избегнете дублиране на код.

Например, в Java можете да направите така:

public interface MyInterface {
    void doSomething();
}

public abstract class BaseClass implements MyInterface {
    @Override
    public void doSomething() {
        System.out.println("Базова реализация");
    }
}

public class ChildClass extends BaseClass {
    // Може да презапишете doSomething или да използвате базовата реализация
}

По този начин, предоставянето на реализация на методите на интерфейса в базовия клас може да бъде полезно и логично от гледна точка на архитектурата и повторната употреба на кода.