Когда нужно вызывать super в переопределенном методе?
=======================================================

 При переопределении какого либо метода в классе наследнике IDEA автоматом прописывает вызов родительского метода.  

  

```
override fun method() {
        super.method()
    }
```
  

  

 Например в callback методах системы Android эти вызовы должны присутствовать. Почему не знаю. Но во всех примерах они присутствуют.  

Но вот если создать поток с помощью Thread или Runnable и переопределить run(), то внутри него можно убрать super.run() и это ничего не изменит. Как понять когда этот вызов нужен, а когда нет? 

 Очень зависит от класса-предка, и всей объектной модели языка программирования. Вдруг все классы где-то регистрируются и вызов super - просто данность?   

  

Если он делает в конструкторе работу которую нужно сделать чтобы Вы могли работать с ним, то вызов нужен.   

Например класс-предок инициализирует какие-то сокеты или ещё что, а вы решили просто своё свойство дописать,  

без super класс работать не будет как надо.  

 При том вы сами решаете когда это делать, хоть не делать, хоть в начале, хоть в конце, хоть по условию.  

  

> Например в callback методах системы Android эти вызовы должны присутствовать. Почему не знаю. 

  

Потому что система видит что вами определен свой код, и делегирует ему вызов системного кода. Если вы замещаете системный код (скрытый в super'ах) - не делаете вызов super (что вообще редко, ибо он завернут в исключительную конструкцию чтоб не сломать UI и дать работать хотяб системному коду, в случае ошибок в вашей программе), если не замещаете а дополняете, делаете.