Собеседование по Kotlin. Stack Of Questions #1

Автор:

1. Преимущества языка kotlin перед java?

– Синтаксис языка обеспечивает компактное написание кода, позволяет уменьшить размеры классов и повысить скорость разработки;
– Работа с null данными более продумана и гибка;
– Отсутствуют проверяемые (checked) исключения;
– Классы данных;
– Более гибкая работа с generics.

2. Что такое companion object?

Компилируется в public static final class на java. Позволяет обращаться к полям и методам класса напрямую, не создавая объекта класса. Работает подобно ключевого слова static в языке java.

@NotNull
public static final StackOfSkillsActivity.Companion Companion = new StackOfSkillsActivity.Companion((DefaultConstructorMarker)null);
public static final class Companion {
   public final void comp() {
      int a = true;
   }

   private Companion() {
   }

   // $FF: synthetic method
   public Companion(DefaultConstructorMarker $constructor_marker) {
      this();
   }
}

3. Что из себя представляет класс object?

Файл, содержащий только object представляет из себя Singleton, т.е. будет создан только один экземпляр этого класса, можно наследоваться от других классов.

4. Что такое data класс и можно ли наследоваться от него?

– Класс, помеченный ключевым словом data обязательно должен иметь основной конструктор, содержащий хотя бы один аргумент;
– Класс помеченный словом data автоматически переопределяет реализации методов toString(), equals(), hashCode(), copy() для параметров переданных в конструкторе;
– От data class нельзя наследоваться т.к. он является final классом, но может наследоваться от других классов;
– Класс данных не может быть абстрактными, open, sealed или inner.

5. Что такое sealed класс?

Это abstract класс, который имеет ограниченную иерархию наследования. Не объявляется с ключевым словом inner. В качестве наследников могут быть:
– Object который не имеет конструктора;
– Class который может иметь конструктор с параметрами.

Преимущества перед Enum:
– Может иметь несколько экземпляров классов, enum работает подобно Singleton
– Классы наследники могут иметь разные конструкторы с различным количеством аргументов;
– При использовании when, все подклассы, которые не были проверены  в конструкции, будут подсвечены IDE.

 

 

Ваш адрес email не будет опубликован. Обязательные поля помечены *