複数のクラスに同じ名前のプロパティがあり、
そのプロパティを参照するクラスを作成したいと考えております。

言葉で表現しにくいので、以下にサンプルを記載させて頂きました。
クラスa,bには同じ名前のプロパティpがあり、
クラスmonitorはプロパティpを参照するクラスになります。
このクラスmonitorにクラス名aかbを与えることで、
プロパティpを参照させたいと考えております。
クラスはa,b,c,d,...と増え(プロパティpは必ずあります)、
動的にクラス名をmonitorに与えたいと考えております。

class a {
    var p: String!
    init() {
        self.p = "class a"
    }
}
class b {
    var p: String!
    init() {
        self.p = "class b"
    }
}

// ここではクラスa専用になっているが、クラスbでも共通で利用したい
class monitor {
    var i: a!
    init() {
        self.i = a()
        print(self.i.p)  // class a
    }
}
let i = monitor()  // クラスaかbを渡して、共通のpを参照させたい

伝わりにくい内容ではございますが、どうかよろしくお願い致します。
より便利な方法がありましたらご教授頂けると幸いです。