#はじめに
pythonでhelloworldしてから今まで、オブジェクト指向や、クラスの概念をもやっとしたまま用いていました。
そろそろかんりか(完全理解)したいと考え自分なりにまとめようと思います。
#オブジェクト指向とは
オブジェクトや、クラス、インスタンス、メソッド、オーバーライド、インテリヘンス、、など横文字用語が多すぎる!
中学の頃やった世界史を思い出しますね、五賢帝とか、、、(笑)
調べたところオブジェクトと命令型は対になる概念のようです。
命令型プログラミング:データと命令を別々に記述して処理をする
オブジェクト指向:データと命令を一緒にしてしまう考え方、変数と関数をひとまとめにする考え方
別々で処理していたデータと命令を合体させて考えようっていうのがオブジェクト指向の概形みたいです。また、ここで言う「命令」を「メソッド」といいます。
クラスと関数の違いもこの点にあると考えれます。
#クラス
オブジェクト指向というのは考え方を指していることが分かったと思います。
その考え方を「クラス」を用いると実現できます。クラスは設計図に例えられることが多いですね。
クラスという箱の中に「データ」と「命令(メソッド)」というモノを入れているという考え方もできるのかなと思います。
データとメソッドの考え方はこのサイトがわかりやすいと感じました。
#インスタンス
「インスタンスを生成する」見慣れた語感です。
instanceは例、実例、事例という意味で、クラスを実際に使うときに”生成”されるものです。
クラスが車の設計図だとしたら、インスタンスはもっと具体的な「ベンツ」「フェラーリ」の設計図と考えていいのではないでしょうか。
クラスはインスタンスを包含しているイメージを持っていますが合ってますでしょうか・・・?
クラスで定義したデータの枠組み(名前、体重など)に具体的な数字を入れたものがインスタンスになるのかなと
#クラスの継承
親クラスをスーパークラス
子クラスをサブクラスといいます
スーパークラスを雛形にして、サブクラスを作ることを継承といいます。
サブクラスでは、スーパークラスのデータやメソッドを利用できるほか、別のメソッドを追加して機能を拡張できます。
また、スーパークラスのメソッドを書き換えて、上書き保存することをオーバーライドという。
複数のスーパークラスから継承することを多重継承という。