「継承できないクラス」をつくるには「final指定子」を使おう。ついでに「override指定子」も使おう。

これで、コンパイルエラーとなる。

class Aは、final修飾子により、"継承不可"となる。

classをfinalすれば、そのclassから派生するクラスが「作れない」ことが保証される。

仮想関数もfinal

仮想関数(virtual)もfinalできる。

クラスAから派生したクラスBは、barメソッドをオーバーライドできるが、A::fooはfinal指定されているため、fooメソッドはオーバーライドできない。

派生クラス側のオーバーライドメソッドにはoverride指定子を付ける

override指定子があるだけで、派生クラスであることがわかる。

また、オーバーライド元の基底クラスを継承していない場合、コンパイルエラーとなる。

「必要なメソッドだけを派生クラスに公開する」目的のfinal