dataの継承
dataは継承出来る。
data A{ int I1; } 継承して data B : A{ int I2; } こうすると実際は data iB{ int I2; } data B{ A a; iB ib; } こうなる。 data C : A{ int I3; } data D : B,C{} こうすると data D{ A a; iB ib; iC ic; } こうなる。 継承元オブジェクトの代入演算子<- D d <- 処理してBを返す(); これは d.a = b.a; d.ib = b.ib; これを行う。 同名同型のメンバは一致するものとして扱う。 data A{ int I1; int Common; } data B : A{ int I2; int Common; } Commonへの代入は二つに行われる。 b.Common = 1; ↓ b.a.Common = 1; b.ib.Common = 1; オブジェクト代入演算子もこれに習う data C : A{ int I3; int Common; } D d <- 処理してBを返す(); ↓ d.a = b.a; d.ib = b.ib; d.ic.Common = b.a.Common; DをBにキャストする処理は Bを取る関数(d); B b; b.a = d.a; b.ib = d.ib; Bを取る関数(b) こういう処理になる。