Chester, не могу быть увереным на 100%, но мне кажется, что моя мысль правильная.
Использование "abstract" в данном случае ничего не меняет!
Интерфейс является и так уже абстрактным классом.
Таким образом, будет там написано просто "interface", или "abstract interface" - это не имеет значения.
Результат будет один и тот же.
Накидал тут примерчик:
Код: Выделить всё
public abstract interface AbstractInterface {
public abstract void test();
}
Код: Выделить всё
public interface AbstractInterface2 {
public void test();
}
Код: Выделить всё
public class ClassA implements AbstractInterface {
public void test() {
System.out.println("ClassA");
}
}
Код: Выделить всё
public class ClassB implements AbstractInterface {
public void test() {
System.out.println("ClassB");
}
}
Код: Выделить всё
public class ClassA2 implements AbstractInterface2 {
public void test() {
System.out.println("ClassA2");
}
}
Код: Выделить всё
public class ClassB2 implements AbstractInterface2 {
public void test() {
System.out.println("ClassB2");
}
}
Код: Выделить всё
public class TestInterfaces {
public static void main(String[] args) {
AbstractInterface a = new ClassA();
AbstractInterface b = new ClassB();
AbstractInterface2 a2 = new ClassA2();
AbstractInterface2 b2 = new ClassB2();
a.test();
b.test();
a2.test();
b2.test();
}
}
Работает абсолютно идентично.
Понимаю, что это не доказательство, но просто, как пример.
Скорей всего применение оборота "abstract interface" - это излишняя перестраховка, а может быть, просто привычка из другого языка (Точно не знаю, но, возможно, в Си нужно обязательно писать "abstract" в таких случаях).
P.S. Если же вопрос в том, зачем вообще применять интерфейсы - то это совсем другой разговор :-)