LoginSignup
6
6

More than 5 years have passed since last update.

Java入門:第10回 クラスの定義と利用

Posted at

※ここからオブジェクト指向に入りますが、Androidアプリケーションを学んだのだけれどJavaがよくわからない人向けの解説になります。

8回までJavaの基本的な文法について見てきました。7回まではmainメソッドと呼ばれる実行可能場所にどのような命令を書けば良いかという話でした。8回はメソッドを自分で作り、mainメソッドの外に処理を記述しました。すべての処理をmainメソッドの中に記述することもできますが、再利用が出来ないなどの理由から自分でメソッドを作って呼び出してみたわけです。

複数の人(数人~世界中の参加者)が集まってアプリケーションを構築することをイメージしてみてください。みんなが一つのファイルの中に、処理を記述したりメソッドを定義したりすると何が書かれているのかわからなくなり混乱してしまいます。そこでJavaではクラス単位でファイルを分けることができます(注:1ファイル内に複数のクラスを定義することもできますがここではファイル単位とし説明します)。

別ファイルに分けたクラスには第8回と同じようにメソッドを記述することができます。例えば擬似的にAndroidでよく利用するActivityを定義するとしたら、次のようになります。

public class Activity {

}

このActivityクラスを利用するには、mainメソッド内で次のように利用します。

static public  void main(String [] args) {
  Activity actA = new Activity();
}

Javaではnew演算子を利用することで、そのクラスを利用することができるようになります。次のように複数個のActivityクラスを利用することもできます。

static public  void main(String [] args) {
  Activity actA = new Activity();
  Activity actB = new Activity();
}

これらの概念図は次のようになります。

Image.png

new演算子を利用して生成したものをオブジェクトまたはインスタンスと呼びます。オブジェクトには名前をつけることができて、actAやactBという名前を付けています。これら名前のことをオブジェクト変数またはインスタンス変数といいます。オブジェクト変数を利用してそのオブジェクトの持つさまざまな機能を利用することができます。

actAやactBはそれぞれ別のオブジェクトに結びついています。試しに次のように記述してみましょう。

static public  void main(String [] args) {
  Activity actA = new Activity();
  Activity actB = new Activity();
  System.out.println(actA);
  System.out.println(actB);
}

実行すると、次のように表示されます。

Activity@5127a6bc
Activity@233aa44

Activityというクラス名の後ろに数字とアルファベットが並んでいます。この数字とアルファベットは実行のタイミングや環境によって異なります。これはオブジェクトの製造番号のようなもので、actAもactBもそれぞれ、Activityクラスなのだけれど別の存在であることを示しています。

喩えるならば、AndroidのNexus5をいう機種があったとします。このNexus5を私とあなたが持っていたと考えた時に、どちらもNexus5であることには変わりませんが、異なる存在であることと同じ状況なのです。このように考えるとクラスはその存在を定義したものであり、その存在を定義した設計図であるといえます。またオブジェクトはクラスという設計図から実際に創りだしたモノであるといえます。

このようにオブジェクト(モノ)の考え方を主体にプログラミングを行うことをオブジェクト指向プログラミングと呼びます。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6