例4-1 消防隊員と消防車を表すクラス
この例は StartingPoint ディレクトリ以下の FireTraining.sln ソリューションに含まれる Firetruck.cs ファイルの5行目以降、ならびに Firefighter.cs ファイルの5行目以降に相当します。
例4-2 必須の装備であるはしごを備えた消防車
この例は Associations ディレクトリ以下の FireTraining.sln ソリューションに含まれる Firetruck.cs ファイルの5行目以降に相当します。
例4-3 C# における継承
この例は Associations ディレクトリ以下の FireTraining.sln ソリューションに含まれる Firetruck.cs ファイル全体に相当します。
例4-4 継承した基底クラスの機能を派生クラスから利用する
この例は Associations ディレクトリ以下の FireTraining.sln ソリューションに含まれる Program.cs ファイルの14行目以降に相当します。
例4-5 コンパイラの機嫌を取るために基底クラスのメソッドを使用する
この例は InheritanceWithMisplacedMethod ディレクトリ以下の FireTraining.sln ソリューションに含まれる Program.cs ファイルの15行目以降に相当します。
例4-6 異なる参照型と、異なるメソッド
この例は Hiding ディレクトリ以下の FireTraining.sln ソリューションに含まれる Program.cs ファイルの21行目以降に相当します。
例4-7 メソッド隠蔽のわかりづらい用法
この例は Hiding ディレクトリ以下の FireTraining.sln ソリューションに含まれる Program.cs ファイルの40行目以降に相当します。
例4-8 virtual メソッドとメソッドの実行順序
この例は Virtual ディレクトリ以下の FireTraining.sln ソリューションに含まれる Firefighter.cs ファイルの5行目以降に相当します。
例4-9 virtual メソッドの呼び出し
この例は Virtual ディレクトリ以下の FireTraining.sln ソリューションに含まれる Program.cs ファイルの12行目以降に相当します。
例4-10 派生クラスにメソッドを公開する
この例は Protection ディレクトリ以下の FireTraining.sln ソリューションに含まれる Firefighter.cs ファイルの16行目以降に相当します。
例4-11 新しくアクセス可能になったメソッドをオーバーライドする
この例は Protection ディレクトリ以下の FireTraining.sln ソリューションに含まれる TraineeFirefighter.cs ファイルの4行目以降に相当します。
例4-12 基底クラスの呼び出しによる重複の除去
この例は CallBase ディレクトリ以下の FireTraining.sln ソリューションに含まれる TraineeFirefighter.cs ファイルの4行目以降に相当します。
例4-13 リファクタリングされた基底クラス
この例は Refactored ディレクトリ以下の FireTraining.sln ソリューションに含まれる FirefighterBase.cs ファイルの5行目、ならびに Firefighter.cs ファイルの4行目に相当します。
例4-14 新しくリファクタリングされた基底クラス
この例は Refactored ディレクトリ以下の FireTraining.sln ソリューションに含まれる TraineeFirefighter.cs ファイルの4行目以降に相当します。
例4-15 管理スタッフを表すクラス
この例は Refactored ディレクトリ以下の FireTraining.sln ソリューションに含まれる Administrator.cs ファイルの4行目以降に相当します。
例4-16 Administrator クラスの使用
この例は Refactored ディレクトリ以下の FireTraining.sln ソリューションに含まれる Program.cs ファイルの12行目以降に相当します。
例4-17 FireStation クラス
この例は Refactored ディレクトリ以下の FireTraining.sln ソリューションに含まれる FireStation.cs ファイルの4行目以降に相当します。
例4-18 現在のクラス階層構造ではすべてがうまくいっていないという山積みの証拠
この例は BrokenInheritance ディレクトリ以下の FireTraining.sln ソリューションに含まれる FirefighterBase.cs ファイルの5行目以降に相当します。
例4-19 頼みの綱:クラス階層を再考すべき
この例は BrokenInheritance ディレクトリ以下の FireTraining.sln ソリューションに含まれる Administrator.cs ファイルの5行目以降に相当します。
例4-20 インタフェースの定義
この例は Interfaces ディレクトリ以下の FireTraining.sln ソリューションに含まれる INamedPerson.cs ファイルの2行目以降、ならびに ISalariedPerson.cs ファイルの2行目以降に相当します。
例4-21 インタフェースの実装
この例は Interfaces ディレクトリ以下の FireTraining.sln ソリューションに含まれる Administrator.cs ファイルの4行目以降に相当します。
例4-22 クラス階層の別の部分における同じインタフェースの実装
この例は Interfaces ディレクトリ以下の FireTraining.sln ソリューションに含まれる FirefighterBase.cs ファイルの5行目以降に相当します。
例4-23 インタフェースを利用するようFireStation を変更
この例は Interfaces ディレクトリ以下の FireTraining.sln ソリューションに含まれる FireStation.cs ファイルの5行目以降に相当します。
例4-24 明示的なインタフェースの実装
この例は ExplicitInterfaces ディレクトリ以下の FireTraining.sln ソリューションに含まれる AFootInBothCamps.cs ファイルの4行目以降に相当します。
例4-25 同一のオブジェクトに対して、同一名のメンバを異なるインタフェースから呼び出す
この例は ExplicitInterfaces ディレクトリ以下の FireTraining.sln ソリューションに含まれる Program.cs ファイルの10行目以降に相当します。
例4-26 インタフェースの1 つを明示的に実装する
この例は ExplicitAndImplicitInterfaces ディレクトリ以下の FireTraining.sln ソリューションに含まれる AFootInBothCamps.cs ファイルの4行目以降に相当します。
例4-27 IClockIn インタフェースの実装
この例は RuntimeCheck ディレクトリ以下の FireTraining.sln ソリューションに含まれる FireStation.cs ファイルの5行目以降に相当します。