オブジェクト指向プログラミングのちょっと進んだ概念として、「抽象クラス(ちゅうしょうクラス)」というものがあるよ。
「抽象クラス」は、一言で言うと「それ自体では完成していない、不完全な設計図」のことなんだ。どういうことかというと、普通のクラスは、その設計図からすぐに「モノ(インスタンス)」を作ることができるよね?でも、抽象クラスは、それだけではインスタンスを作ることができないんだ。
まるで、おもちゃのロボットの設計図で、「腕」や「足」の基本的な形は描かれているけど、それが「どんな動きをするか」という肝心な部分がまだ決まっていない、みたいなイメージだよ。
じゃあ、何のために抽象クラスを使うんだろう?それは、「これを継承する子クラスは、必ずこの動き(メソッド)を自分で作る必要があるよ」というルールを決めるためなんだ。
例えば、動物のクラスを考えてみよう。「動物」は、みんな「鳴く」という行動をするよね。でも、犬は「ワンワン」、猫は「ニャーニャー」と、鳴き方はそれぞれ違う。このとき、「動物クラス」を抽象クラスにして、「鳴く」というメソッドを抽象メソッドとして定義するんだ。
そうすると、この抽象クラスを継承した「犬クラス」や「猫クラス」は、必ず自分たちで「鳴く」というメソッドを、それぞれの鳴き方で完成させなければならない、というルールが生まれるんだ。
抽象クラスのポイントはこれだよ。
それ単独ではインスタンスを作ることができない。
中に「抽象メソッド」という、まだ中身が書かれていないメソッドを持つことができる。
抽象クラスを継承した子クラスは、抽象メソッドを必ず自分で完成(実装)させなければならない。そうしないと、その子クラスも抽象クラスになってしまうよ。
抽象クラスは、大きなプログラムを作るときに、プログラム全体のルールを決めたり、チームで開発するときに、みんなが同じ約束でプログラムを作るようにしたりするのに、とっても役立つんだ。
次のレッスンでは、Pythonで実際に抽象クラスを作る方法を学ぶから、楽しみにしていてね!