Как сделать способ обновления создавать объекты RacingCar, если он вызван в подклассе без, реализующего его в RacingCar?Как сделать метод в суперклассе создавать объекты подкласса?
ответ
Нравится. Если это метод класса:
class Car {
class func upgrade() -> Self {
return self()
}
}
Если это метод экземпляра:
class Car {
func upgrade() -> Self {
return self.dynamicType()
}
}
Тип возвращаемого Self
означает «класс меня, полиморфно». Поэтому мы возвращаем автомобиль, если это автомобиль и гоночный автомобиль, если это RacingCar. Обозначения self()
и self.dynamicType()
являются сокращением для переписки init
; это оба класса, так что это законно. Я полагаю, у вас будет более сложный инициализатор. Вам нужно будет сделать свой инициализатор required
, чтобы успокоить страхи компилятора (как я объясню here); таким образом, ни одно из указанных выше не будет компилироваться, если только init()
не отмечено required
в автомобиле.
И посмотрите мою книгу, в которой описывается эта точная ситуация: http: // www. apeth.com/swiftBook/ch04.html#_type_reference – matt
Ничего себе, очень приятно! – hakonbogen
- 1. Как вызвать метод в суперклассе суперкласса подкласса
- 2. C++ метод вызова из подкласса в суперклассе
- 3. Метод вызова C++ для подкласса в суперклассе?
- 4. Объявление подкласса в суперклассе и метод вызова
- 5. метод из подкласса не найден в суперклассе
- 6. Использование метода подкласса в суперклассе
- 7. Как создавать подклассы в суперклассе?
- 8. Как использовать методы подкласса в суперклассе?
- 9. Добавление экземпляров подкласса к массиву в суперклассе
- 10. Как получить поле объекта, созданного в суперклассе, из подкласса подкласса
- 11. Можно объявить метод в суперклассе, который возвращает объект подкласса типа?
- 12. Метод java подкласса, ссылающийся на поле в суперклассе help!
- 13. Отслеживание всех экземпляров подкласса в суперклассе
- 14. с использованием статической переменной подкласса в суперклассе
- 15. Наследование с использованием экземпляров подкласса в суперклассе
- 16. Как использовать методы из подкласса в абстрактном суперклассе
- 17. функция вызова в суперклассе из подкласса
- 18. Как создавать объекты ODataQueryOptions
- 19. Как вызвать методы подкласса в суперклассе в Python
- 20. Как добавить funtionallity в Jbutton, расположенный в суперклассе из подкласса?
- 21. Метод keyPressed() игнорирует определенный метод в суперклассе
- 22. Использование общего типа подкласса в его абстрактном суперклассе?
- 23. Настройка типа поля в суперклассе из подкласса (Java)
- 24. Как использовать конструктор подкласса Scala для члена в суперклассе?
- 25. Как использовать метод const в суперклассе
- 26. Как создавать объекты в PHP
- 27. Возможно ли обновить объект, инициализированный в суперклассе из подкласса?
- 28. Ссылка на объект подкласса при вызове функции, объявленной в суперклассе
- 29. Как я могу использовать метод Objective-C в суперклассе при создании экземпляра подкласса?
- 30. Метод суперкласса получает переменную подкласса
См. Также: [Протокол func return Self] (http://stackoverflow.com/questions/25645090/protocol-func-returning -self) –