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 или да използвате базовата реализация
}
По този начин, предоставянето на реализация на методите на интерфейса в базовия клас може да бъде полезно и логично от гледна точка на архитектурата и повторната употреба на кода.