質問: インスタンスメソッドとクラスメソッドの違いがいまいちわかりません。
回答: 1番の違いは、そのメソッドが、クラスに所属しているか、 インスタンスに所属しているか、の違いになります。 クラスメソッドは、クラス側に所属しているため、インスタンスが存在せずとも呼び出すことが可能です。 しかし逆にインスタンスには所属していないので、インスタンス固有のデータには直接アクセスすることができません。 同様に、インスタンスに所属するインスタンスメソッドも、クラスメソッドからは呼び出せません。 インスタンスメソッドは、固有のインスタンスに所属しているメソッドです。 その為、そのメソッドから、フィールドにアクセスした場合、 自分自身のインスタンスのフィールドが持つデータへのアクセスとなります。 インスタンスへのアクセスを行う為、インスタンス自体が存在していなければ、呼び出すことはできません。 オブジェクト指向的には、本来はインスタンスメソッドが標準です。 それだと面倒だという時のためにクラスメソッドが作られたと思ってください。 クラスメソッドはあくまで例外的な存在です。