После ситуации:Наследование от нескольких классов, которые имеют один и тот же супер класс - как обойти
class Sprite{ // has to be a class, not a protocol!
func s(); // can not be changed
}
class Element: Sprite{
// needs s(); for:
func e();
}
class Wiggle: Sprite{
// needs s(); for:
func w();
}
Как я могу достичь чего-то вроде:
class Button: Wiggle{
// needs s();
// needs w();
}
class Cursor: Element, Wiggle{
// needs s();
// needs w();
// needs e();
}
class Pointer: Element{
// needs w();
// needs e();
}
Это не работает, так как для курсора покачивание и Element как наследовать от Спрайт.
Поэтому я думал об использовании подхода расширения как:
class Button:Sprite{
// needs s();
// needs w();
}
class Cursor: Element{
// needs s();
// needs w();
// needs e();
}
class Pointer: Element{
// needs w();
// needs e();
}
extension Button, Cursor { // or similar to make w() available in Button & Cursor
// using s() for:
// func w();
}
Как я могу продлить Button
& Cursor
в одном шаге?
Используйте [протоколы] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html). – Alexander
Как я уже упоминал, Sprite должен быть классом, а не протоколом, поскольку он уже реализован (не мной). – cocoseis
Можете ли вы его переделать? – Alexander