В каком случае я должен установить super (), когда я создаю конструктор? - PullRequest
0 голосов
/ 23 февраля 2019

Я не понимаю, когда я создаю конструктор, иногда мне приходится писать это

constructor(...):super(){}

У вас есть пример для понимания?

1 Ответ

0 голосов
/ 23 февраля 2019

Рассмотрим класс Bar:

open class Foo(val i: Int)

class Bar: Foo {
    constructor(i: Int): super(i)
}

Поскольку у него нет первичного конструктора, вторичный конструктор должен вызывать конструктор класса, из которого он получен (который Foo).

Если у класса нет первичного конструктора, то каждый вторичный конструктор должен инициализировать базовый тип с помощью ключевого слова super или делегировать другому конструктору, который это делает.( Source )

В этом конкретном случае вместо этого лучше использовать первичный конструктор:

class Bar(i: Int): Foo(i)

Если производный классимеет первичный конструктор, базовый класс может (и должен) быть инициализирован прямо здесь, используя параметры первичного конструктора.( Источник )

...