抽象クラス
C#の抽象クラス自体はJavaとほとんど同じだが、抽象クラスを継承してクラスを作る場合、C#ではここでもovrerideキーワードを使用する必要がある。
using System; abstract class Base { public abstract void Method(); } class Sub : Base { // overrideが無いとエラー public override void Method() { Console.WriteLine("Method"); } } class Program { static void Main(string[] args) { Sub s = new Sub(); s.Method(); Base b = s; b.Method(); } }
抽象クラスを継承した場合、作成するクラスを抽象クラスにしない限りオーバーライドするしかないからここのoverrideは必要ないと思う。
具象クラスから抽象クラスに変更した場合には恩恵があるかも*1。
この本では、abstract publicの順番だったけど、そういえばこの順番は意識せずにpublic abstractとしてたな。
とりあえず、今までの習慣どおりpublic abstractの順番にしておこう*2。