「継承できないクラス」をつくるには「final指定子」を使おう。ついでに「override指定子」も使おう。
これで、コンパイルエラーとなる。
class Aは、final修飾子により、"継承不可"となる。
classをfinalすれば、そのclassから派生するクラスが「作れない」ことが保証される。
仮想関数もfinal
仮想関数(virtual)もfinalできる。
クラスAから派生したクラスBは、barメソッドをオーバーライドできるが、A::fooはfinal指定されているため、fooメソッドはオーバーライドできない。
派生クラス側のオーバーライドメソッドにはoverride指定子を付ける
override指定子があるだけで、派生クラスであることがわかる。
また、オーバーライド元の基底クラスを継承していない場合、コンパイルエラーとなる。