C#も抽象クラスを作れる・・・。
先頭にabstractとつけると、抽象クラスとなる・・・。
コンストラクタ名やメソッド名を出力しているだけ・・・。
ちゃんとした実装は、
派生クラスDerivedClassで・・・。
Setだけわざとオーバーライドしていない・・・。
抽象クラスは、インスタンスは生成できなくても変数としては使える・・・。
DerivedClassオブジェクトインスタンスをAbstractClassのabstobjに格納・・・。
コンストラクタで10, "ABC"を既にセットした・・・。
Outputで一旦出力・・・。
DerivedClassでオーバーライドしていないSetで、20, "XYZ"をセット・・・。
最後にOutputで出力・・・。
AbstractClass(int i, string str) i = 10, str = ABC Set(int i, string str) i = 10, str = ABC 続行するには何かキーを押してください . . .
Setはオーバーライドされていないので、抽象クラスのメソッド名出力が呼ばれている・・・。
よって、値がセットされないのだから、そのあとのOutputで20, "XYZ"は出力されず、10, "ABC"のまま出力される・・・。
Sample/MainClass.cs at master · bg1bgst333/Sample · GitHub
Sample/AbstractClass.cs at master · bg1bgst333/Sample · GitHub
Sample/DerivedClass.cs at master · bg1bgst333/Sample · GitHub