HatenaPocket本稿はクラスについて説明していきます。クラスとは具体的に何なのかというと、オブジェクトを生成するための設計図です。Javaはこの設計図を基に新しいデータの塊を作成します。これまでさんざん使用してきた、String型というのもJavaが標準で用意しているクラスなのです。文字列の比較メソッドというのはStringクラスに定義されているメソッドの一つなのですね。Javaはこのクラスという名の設計図が標準でいくつも用意されていて、そのクラスの中に複数のメソッドが定義されています。Javaのメソッドを利用するにはクラスの知識も必要で、それらのメソッドを利用して、楽にプログラミングができるのです。今回はそのクラスを作成する手段を覚え、オブジェクト指向的なプログラミングができるようにしていきたいと思います。クラスを作成して、利用するまずは、どのようなクラスを作成するか考えてみましょう。RPGの魔法使いのキャラクターの一人ひとりに独自のステータスを持たせたい場合、ここまで説明した範囲の知識であればどう定義するでしょうか。こんな感じになると思います。150;System.out.println(charaName1+"はhp="+hp1+":mp="+mp1+"です。");System.out.println(charaName2+"はhp="+hp2+":mp="+mp2+"です。魔女はhp=100:mp=50です。白夜の魔女はhp=200:mp=150です。これでも問題ありませんが、ここまで同じような定義がされるような場合は、クラスが使えます。キャラクターのステータスを表す設計図を作成するとよさそうですね。クラス名{定義したい変数;定義したい変数;定義したい変数;}となります。クラス型()」と記述します。実体を作成することをインスタンス化するともいいます。クラス内の変数にアクセスしたい場合は「クラス変数.変数名」でアクセス可能です。それでは、実際にクラスを作成して設計図からステータスを生成してみましょう。150;System.out.println(st1.name+"はhp="+st1.hp+":mp="+st1.mp+"です。");System.out.println(st2.name+"はhp="+st2.hp+":mp="+st2.mp+"です。魔女はhp=100:mp=50です。白夜の魔女はhp=200:mp=150です。なんかコードが長くなったように見えますが、名前、HP、PPがそれぞれ一つのデータとなって扱えるようになるため、無駄にたくさんの変数を宣言しなくてよくなっていますね。この一つのものに集約できる機能はプログラムの規模がでかくなればなるほど重要になっていきます。複数のデータを集約して一つの物として考えれば混乱しにくくなりそうだと思いませんか?ちょっと変な例えかもしれませんが、車は複数のパーツからできて1台の車ができているわけですが、個々のパーツがバラバラになっている状態から何とか運転させようとするのと、全てのパーツが集約された車というものを運転させようとするのとでは、どちらのほうが運転しやすそうですか?車自体を扱うほうが、運手は簡単そうな気がしないですか?プログラムでもいろんなパーツが散らばってしまうと訳が分からなくなり、バグを引き起こしやすくなるんですね。できるだけ一つに集約した物体として扱おうというわけです。イメージクラスメソッドクラス内にメソッドを作成することもできます。メソッド名(引数){//任意の処理}}のように記述すると定義できます。定義したメソッドには、「クラス変数.メソッド名(引数)」でアクセスできます。実体化したメソッド呼び出し時には実体化しているデータとして内部にアクセスできるため、メソッド実行時の振る舞いを別の実体と変えることができます。わけがわからないと思うので、実際にメソッドを定義して実行までをやってみましょう。printPower(){System.out.println(name+"は"+(hp+mp)+"の戦闘力を持つ。小〇さんは30の戦闘力を持つ。トー〇は125000の戦闘力を持つ。カン〇は25000の戦闘力を持つ。クラスメソッド、printPowerは同じプログラムなのにそれぞれ違う値を表示できています。それぞれのCharaStatusオブジェクトが、別の変数を持っているということがわかるかと思います。以前はstaticメソッドを使用しましたが、オブジェクト個々の振る舞いを定義したメソッドを使いたい場合はstaticは付けないようにしましょう。コンストラクタクラスにはコンストラクタと呼ばれる特殊なメソッドが定義できます。クラス型(引数)」を呼び出した時に呼び出されます。任意で引数を指定することもできます。クラス側の定義はクラス名(){//コンストラクタの処理}とします。コンストラクタはオブジェクト作成時にデータを初期化したいときなどに使えます。それではサンプルをご覧ください。print(){System.out.println("私は"+color+"のラティファです。私は普通のラティファです。私は赤のラティファです。私は黄色のラティファです。今回のコンストラクタの場合だとコンストラクタにはどんな特徴かを引数で渡して初期化するようにしました。設計図からオブジェクトを生成するということがそろそろイメージできて来たのではないでしょうか。インスタンスイニシャライザコンストラクタ以外でも初期化する手段はあります。それが、インスタンスイニシャライザです。クラスの内部に{}と記述するだけで定義ができます。Latifa{{System.out.println("インスタンスイニシャライザの呼び出し");}}実行結果インスタンスイニシャライザの呼び出し自身のクラスを明示的に示す通常メソッド内の変数は同じ名前を付けられませんが、クラスの場合はつけることができます。名前が被った場合はメソッドの変数を指定したものが呼び出されるため、クラス変数側を呼び出せません。クラス側の変数を呼び出す方法も用意されています。「this.変数名またはメソッド名」と記述することで呼び出すことができます。name){System.out.println(this.name);System.out.println(name);}}実行結果にゃあこラティファメソッドのほうはあまり使用しないですが、「this.メソッド名」と明示して実行することもできます。クラス変数を初期化しなかった場合クラス変数を初期化しなかった場合は型によって自動で初期化される値が変更されます。数値なら0、booleanならfalse、クラス系の型はnullです。...【Java】複数端末間の通信を簡単に実現できるマルチキャスト通信マルチキャストを利用すると複数端末間の通信が簡単に実現できます。コメントをキャンセルメールアドレスが公開されることはありません。当サイトのプライバシーポリシーについてはこちらからご参照いただけます。