Как вы знаете, интерфейсы — это всего лишь абстрактные функции, но с небольшими отличиями.

Аннотация означает две вещи:

  1. этот класс не может быть создан
  2. этот класс может иметь поля без реализации (абстрактные поля, такие как абстрактные функции или абстрактные свойства)

Теперь поговорим об отличиях:

  1. Обычный класс может наследоваться только от одного абстрактного класса, но может реализовывать любое количество интерфейсов.
  2. интерфейсы не могут управлять состоянием, поскольку они не могут иметь конкретных свойств, подобных этому:
interface Thing {
      val thing = 1  // error Property initializers are not allowed in interfaces
}

но это действительно в абстрактных классах

abstract class Thing {
      val thing = 1  

3. интерфейсы не могут иметь защищенные функции, а абстрактные могут

protected : это модификатор доступа означает, что доступ к полям возможен только в их подклассах.

так что это недействительно

interface something{
protected fun something() = "thing"  // error Modifier 'protected' is not applicable inside 'interface'
}

но это действительно

abstract class something{
protected fun something() = "thing"  
}

4. Интерфейсы могут наследовать от других интерфейсов, используя ту же нотацию, что и для наследования с классами:

interface Base {
fun foo()
}
interface Sub : Base {
fun goo() {
// do something
} }

Однако интерфейс не может пометить унаследованный абстрактный метод как окончательный, даже если он предоставляет реализацию. Итак, это нормально:

interface Base {
fun foo()
}

interface Sub : Base {
override fun foo() {
// this supplies an implementation
} }

но это неверно:

interface Base {
fun foo()
}
interface Sub : Base {
override final fun foo() {
// this supplies an implementation
//error: modifier 'final' is not applicable inside 'interface'
override final fun foo() {
} }

Абстрактные классы, как и обычные классы, могут переопределять унаследованные методы и объявлять эти переопределенные методы как окончательные, чтобы предотвратить их переопределение другими подклассами.

Спасибо …