オブジェクト指向プログラミング(OOP)は、プログラムを作成するための手法の一つです。オブジェクトとは、データ(プロパティとも呼ばれます)とそのデータを操作するための機能(メソッドとも呼ばれます)をまとめたものを指します。
クラス(Class): クラスは設計図のようなものです。たとえば、「犬」というクラスを作るとしましょう。その設計図には、「名前」や「年齢」、「種類」など、犬が持つ属性(プロパティ)と、「吠える」や「走る」など、犬ができる行動(メソッド)が書かれています。
オブジェクト(Object): オブジェクトはクラスから作られる具体的な「もの」です。クラスが設計図なら、オブジェクトはその設計図を元に作られた「家」のようなものです。たとえば、「犬」クラスから、「ポチ」という名前の犬を作ることができます。
インスタンス(Instance): オブジェクトを作る行為をインスタンス化、作られたオブジェクト自体をインスタンスと呼びます。例えば、「犬」というクラスから「ポチ」という名前の犬を作るとき、この「ポチ」は「犬」クラスのインスタンスになります。つまり、設計図(クラス)から具体的な存在(インスタンス)を作り出すということです。
継承(Inheritance): 継承は新しいクラスが既存のクラスの属性やメソッドを引き継ぐことを指します。たとえば、「犬」クラスを元に、「警察犬」クラスを作ることができます。警察犬は犬の一種なので、「吠える」や「走る」などの基本的な行動を継承しますが、さらに「薬物を探す」などの特別なスキルを持つことがあります。
カプセル化(Encapsulation): カプセル化は、データとそのデータに関連するメソッドをひとつの「カプセル」(クラス)にまとめる概念です。このカプセル化により、クラスの内部のデータやメソッドは外部から直接触れることができないように保護され、外部からは特定の方法(メソッド)を通じてのみアクセス可能となります。
ポリモーフィズム(Polymorphism): ポリモーフィズムとは「多形性」という意味で、同じ名前のメソッドが異なる振る舞いをすることを指します。例えば、「犬」クラスと「猫」クラスがそれぞれ「鳴く」というメソッドを持つとします。しかし、実際の振る舞いは「犬」クラスでは「ワンワン」と鳴き、「猫」クラスでは「ニャー」と鳴くように、同じメソッド名でもクラスによって振る舞いが異なります。