Проблема с переопределением подкласса в Swift - PullRequest
0 голосов
/ 12 октября 2018

У меня возникли проблемы с переопределением класса в Swift.В соответствии с указаниями из класса

  1. Создайте класс «Автомобиль» по следующим критериям:

    • a.Свойства (5)

    • год - инициализирован инициализатором

    • make - инициализирован инициализатором
    • модель - инициализирован инициализатором
    • color - инициализируется инициализатором
    • currentSpeed ​​- инициализируется 0 инициализатором

Создать подкласс «Batmobile», который наследуется от класса Car

  • Свойства останутся без изменений

  • Функции

  • Переопределите функцию init (), чтобы она принимала толькогод в качестве ввода, остальные атрибуты должны быть автоматически инициализированы следующим образом:

    • make - Bat Automotive

    • модель - Batmobile

    • цвет - черный

    • currentSpeed ​​- 100

Этообъявления класса, которые я создал: Автомобиль:

class Car {
    //properties of cars
    var year : Int
    var make : String
    var model : String
    var color : String
    var currentSpeed : Int

    //functions of cars
    init(year : Int = 0, make : String, model : String , color : String , currentSpeed : Int = 0) {
        self.year = year
        self.make = make
        self.model = model
        self.color = color
        self.currentSpeed = currentSpeed
    }
}

Бэтмобиль:

class Batmobile : Car {
    override init(year: Int) {
        self.year = year
        self.make = "Bat Automotive"
        self.model = "Bat Mobile"
        self.color = "Black"
        self.currentSpeed = 100
    }
}

Когда я пытался создать БэтмОбъект obile с:

var myBatmobile = Batmobile(year: 2018)

Я получаю следующую ошибку:

Отсутствует аргумент для параметра 'make' в вызове

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

1 Ответ

0 голосов
/ 12 октября 2018

Сделай так:

class Batmobile : Car {
    init(year: Int) {
        super.init(year: year,
                   make: "Bat Automotive",
                   model: "Bat Mobile",
                   color: "Black",
                   currentSpeed: 100)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...