- 411 名前:デフォルトの名無しさん mailto:sage [04/10/19 16:17:36]
- > Class1クラスは、Classクラスのインスタンスを持っている。
違う。 Class1は、Classを拡張している。 class Class1 { // Classを継承させずに書いてみる。いや文法エラーだけど public string Class.s = "Hage1"; public string Class1.s = "Hage2"; } こんな感じに。 この場合名前が同じだからわざわざClass.とClass1.で分けてるけど、そうでなければわざわざ型名をつける必要もないのは分かるね? 単に同じ部分を繰り返し書かなくて良いようにしてるだけ、と捉えることもできる(深く立ち入ればそう単純でもないが > Class1クラスのインスタンスc1は、Classクラスと、Class1クラスのインスタンスを持っている。 だからあくまでClass1のインスタンスはClass1のインスタンス。 Class1がたまたまClassの機能をそのまま引き継いでいるからClassにある機能も使うことができる。 > そこで、Class型のc1でアクセスしたので、Class1クラスのインスタンスの中の、Classクラスのインスタンスの変数sが呼び出された。 Class1クラスにはClass.sとClass1.sが両方定義されている。と考えられる。 普通c1はClass1のインスタンスなんだからsを呼ぶとClass1.sが返される。 でもClass型の方のsが欲しいなら、Class.sを呼び出すことを明示するためにClass型で呼び出す。
|

|