Переопределение расширений протокола Swift

Я экспериментирую с расширениями протокола Swift и обнаружил, что это довольно запутанное поведение. Не могли бы вы помочь мне получить желаемый результат?

Смотрите комментарии к последним 4 строкам кода. (Вы можете скопировать и вставить его на игровую площадку XCode7, если хотите). Спасибо!!

//: Playground - noun: a place where people can play

import UIKit

protocol Color { }
extension Color {  var color : String { return "Default color" } }

protocol RedColor: Color { }
extension RedColor { var color : String { return "Red color" } }


protocol PrintColor {

     func getColor() -> String
}

extension PrintColor where Self: Color {

    func getColor() -> String {

        return color
    }
}


class A: Color, PrintColor { }
class B: A, RedColor { }


let colorA = A().color // is "Default color" - OK
let colorB = B().color // is "Red color" - OK


let a = A().getColor() // is "Default color" - OK
let b = B().getColor() // is "Default color" BUT I want it to be "Red color"

Ответы на вопрос(5)

Ваш ответ на вопрос