Как переписать инициализатор в Swift для подкласса - PullRequest
0 голосов
/ 05 июля 2018

Предположим, у меня есть класс со значением по умолчанию init() внутри.

class Car { 
    var tires: Int
    var doors: Int
    init (tires: Int, doors: Int){
        self.tires = tires
        self.doors = doors 
    }
}

Тогда я создаю подкласс - например, BMW. Подкласс BMW будет иметь собственную уникальную переменную для объема двигателя.

class BMW: Car {
    var volume: Int
    -------- type code here---------
}

Я хочу использовать init () родительского класса, затем добавить к этой init () my volume , чтобы при создании экземпляра подкласс BMW , код будет таким:

var newCar = BMW(tires: Int, doors: Int, volume: Int)

Примечание *: я не хочу жестко кодировать какие-либо значения в самом подклассе (используя super.init ()), я хочу создать совершенно новый инициализатор.

Возможно ли это? Если да, не могли бы вы помочь мне?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Сначала инициализируйте свойство volume подкласса, затем вызовите назначенный инициализатор класса super

class BMW: Car {
    var volume: Int

    init(tires: Int, doors: Int, volume: Int) {
        self.volume = volume
        super.init(tires: tires, doors: doors)
    }
}

Пожалуйста, прочтите Swift Руководство по языку: инициализация и Наследование

0 голосов
/ 05 июля 2018

Вы можете просто добавить новый инициализатор. В идеале, это должно вызывать инициализатор, который вы создали для класса Car, используя super.init(tires:doors:).

init(tires: Int, doors: Int, volume: Int) {
    self.volume = volume
    super.init(tires: tires, doors: doors)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...