‫お帰りなさい｡
‫このビデオでは､ sealedメソッド､ または一般的にsealキーワードについてお話したいと思います｡
‫つまり､ あるメソッドをオーバーライドしたい場合､ base節でvirtualにして､ deriving節でオーバーライドすればいいのです｡
‫ということが見えてきました｡
‫でも､ 他の授業があったらどうしよう？
‫さらにその上をいくことができるのでしょうか？
‫ここで新しいクラスを作成し､ クラスを追加して､ これを1m3と呼ぶことにします｡ これはBMW M3､ つまりBMWのサブクラスまたはドライビングクラスになるようにします｡
‫つまり､ ここではBMWを使う必要があり､ 今度はコンストラクタを作成する必要があるということです｡
‫だから､ そこからコピーするんです｡
‫そしてここで､ モデルも追加します｡
‫だから､ この1枚でM3になるんです｡
‫だから､ 今は不満はない｡
‫必要だからと文句を言われないように付け加えただけです｡
‫そうでなければ､ デフォルトのコンストラクタを用意する必要があります｡
‫そうでなければ､ ベースクラスでそれをしたくない場合｡
‫そこで､ ここでは､ 前に見たように､ デフォルトのコンストラクタが必要になります｡
‫例えば､ これはデフォルトのコンストラクタ､ デフォルトの構成です｡
‫そして今､ 私が先にこれを取り除いたら｡
‫そんなことはない｡
‫まだ文句が出ますが､ これはBMWがデフォルトのコンストラクタも持っていないためです｡
‫そんなBMWなんですね｡
‫そして､ 今度はこれをここで処分することができるのです｡
‫今はご覧の通り､ もう文句のつけようがありません｡
‫でも､ そんなことはしたくないし､ デフォルトのコンストラクタを全部作りたくなかったので､ sealedキーワードの方が重要なんです｡
‫そこで､ このメソッドをここでオーバーライドしたいとします｡
‫つまり､ 今すでにcarから上書きして無料になっているBMWのメソッドリペアは､ それも上書きしたいのです｡
‫そこで､ 先にオーバーライド void repair を作成し､ ここではすでにベースリペアを呼び出しています｡
‫つまり､ ベースクラスを呼び出して､ repairメソッドを呼び出すだけなのです｡
‫そのため､ この場合は単純にこのリペアメソッドを呼び出すことになる｡
‫これで上書きして､ RM3のオブジェクトを作成することができます｡
‫1を作成し､ 3は私のRM 3とし､ 新しいM 3とし､ HPを追加し､ 260とします｡
‫色は赤で､ モデルはm3cスーパーターボとかにする予定です｡
‫プロカーではありません｡
‫だから､ RM3スーパーターボということにしているんです｡
‫そして今､ 私のRM three dot repairメソッドを呼び出すと､ 単にベースメソッドを呼び出すだけです｡
‫そこで､ BMWスーパーターボの修理が行われた｡
‫だから､ 何も足していないのに､ このベースリペアということになったんです｡
‫今はBMWのリペアメソッドを呼び出しています｡
‫こちらもご覧の通りです｡
‫なるほど､ それもそうですが､ 封をする場合はどうすればいいのでしょうか？
‫ですから､ 先ほど言ったように､ このメソッドをもうオーバーライドできないように封印したい場合は､ このshieldキーワードを追加するだけでいいんです｡
‫今度は､ オーバーライドキーワードの前にそれを行う必要があります｡
‫そうでないと､ うまくいかないんです｡
‫だから､ よし､ この仮想メソッドを封印するぞ､ というわけにはいかない｡ それは逆効果だからだ｡
‫つまり､ バーチャルではオーバーライドが可能で､ シールドではオーバーライドができない｡
‫そこで､ virtualをsealedに置き換えると､ overrideではないのでsealedにはできないということで､ repairも文句を言うようになります｡
‫つまり､ オーバーライドメソッドしか封印できないので､ 車の上の車はrepairという仮想メソッドを持っていることになります｡
‫BMWはそのメソッドを継承して上書きし､ 今度は私のRM3が使えなくなるように封印しています｡
‫このように､ 継承されたメンバはシールされているため､ オーバーライドすることはできません｡
‫そのため､ 現在ではこのメソッドをオーバーライドすることができなくなっています｡
‫そして､ この封印されたキーワードの正体は､ まさにそれなのです｡
‫だから継承を封印して､ かなり継承を許さないようにしているわけですが､ それと同じことがメソッドだけでなく､
‫クルマでもできるんです｡
‫そこで､ BMWクラスを継承できないように封印するとします｡
‫このクラス全体は､ BMWを継承することはできません｡
‫だから､ ここでの成功は密閉型BMWに由来しているといえる｡
‫そうか､ それがシールズの仕事か｡
‫それは単に､ さらなる継承のために閉じられるだけです｡
‫わかりました｡
‫ここまでで､ 上書きの使い方､ newキーワードによるメンバーの隠蔽､ そしてsealedキーワードによる上書きメソッドの封印の方法を確認しました｡