クラス束縛演算子は、あるインスタンスに対して、どのクラスで定義さ れたメンバをアクセスするかを限定するための演算子です。クラス束縛演算子 は、
インスタンス名::クラス名
と書きます。この時のクラス名は、継承関係内のクラス、つまり、インスタン ス生成元クラス、あるいは、そのスーパークラスのいずれかでなければなりま せん。このクラス束縛演算子を摘要することにより、適用されたインスタンス は、一時的に「クラス名」で示されるクラスのインスタンスと見なされます。
例えば、前節に示した継承関係があったときに、
var secondChild = new Child ;
secondChild::GrandFather->name = "Tadasaburou" ;
とすると、GrandFatherクラスで定義されたメンバnameに値がセットされていま す。
次の例では、Childクラスの新たなメソッドSetAllを示します。これは、すべ てのnameメンバに名前をセットするものです。この例では、thisに対し てクラス束縛演算子を摘要しています。
method Child::SetAll (name1, name2, name3) {
name = name1 ;
this::Father->name = name2 ;
this::GrandFather->name = name3 ;
}
上記例で、
name = name1 ;
は、
this::Child->name = name1 ;
と書くこともできます。
また、thisを省略して、
method Child::SetAll (name1, name2, name3) {
::Child->name = name1 ;
::Father->name = name2 ;
::GrandFather->name = name3 ;
}
と書くこともできます。