Javaプログラミング勉強-Part3-(クラス編)
- カテゴリ:
- JAVA
今回はこちらです。
でてきましたね。「クラス」です。今回のタイトルは「クラスを簡単に理解する。」
ということで、まず前回のおさらいということで、
- 変数の宣言
- 変数の「型」によって定まるサイズ分のメモリを確保すること
- 変数の初期化
- 変数の宣言によって確保されたメモリに値を書き込んで、メモリの内容と変数の内容を一致させること
そしてこれをふまえて「クラス」という概念が登場するわけですね。
とうわけで雑記です。
- 「クラス」を使うことで変数の組み合わせをひとつの変数であるかのように扱える。
- ん〜ここらへんからややこしくなるのですが、まぁできることが増えるイメージがしますね〜。その分ややこしくなる。だからこそ、基本が大事と。
- そして「クラス」を使うにはまず、「クラス」を定義しなくてはならない。
[sourcecode language="plain"]Class GeographicInfo {
double latitude;
double longitude;
}
[/sourcecode]
▲こんな感じ。「Class」をつけてクラス名を記述するんだな。クラス名の先頭は大文字か。
- クラスを使う場合、そのクラス型であることを宣言する。
[sourcecode language="plain"]class GeographicInfo {
double latitude;
double longitude;
}
public class UsingGeographicInfo {
public static void main( String args[] ) {
GeographicInfo g;
g = new GeographicInfo();
g.latitude = 35.66;
g.longitude = 139.75;
System.out.println(g.latitude);
System.out.println(g.longitude);
}
}[/sourcecode]
「GeographicInfo g;」というふうな形です。プリミティブ型なら「int g;」などですよね。
変数gを宣言して確保されるメモリは、クラスの中に存在する(double型が二つあるので8byte×2)16byteではなく、すべてのクラス型変数は”アドレス”を格納されるために使うので、Javaで”アドレス”を表わす4byteのメモリが確保されるとのこと。
うん、なんとなくわかった”アドレス”って部分がちょっと引っかかったが。。Javaではアドレスを4byteで表わすってことだけたたき込んでおこう!
- クラスを使うときは変数の宣言とは別に生成という手順が必要になる。
- 「g = new GeographicInfo();」ってな感じで生成するわけですね。この生成によって初めてクラスの中に存在する16byteメモリが確保できると。そして、クラスに必要なメモリ領域を確保することを「インスタンス化」というと。そして、メモリ内に存在するクラスの実体のことを「インスタンス(instance:事案)」とか「オブジェクト(object:物体)」と呼ぶ。
ふむふむ。 - クラス内で定義された変数のことを「メンバ変数」とか「フィールド」と呼ぶ。
- これもとにかくインプット。ここでは変数
glatitudeとlongitudeのことですね。 - Javaでは、クラス型のように先頭アドレスを参照して実際の変数にアクセスする変数の型を総称して「参照型」と呼ぶ。
- 日本語としても難しいですね。この図が例なのですが、
[sourcecode language="plain"]
class SimpleClass {
int x;
}
public class ExchangeReferences {
public static void main( String args[] ) {
SimpleClass a = new SimpleClass();
SimpleClass b = new SimpleClass();
a.x = 123;
b.x = 456;
b = a;
System.out.println(b.x);
}
}
[/sourcecode]
結果は、
C:\DOCUME~1\MYDOCU~1\MYJAVA~1>javac
ExchangeReferences.javaC:\DOCUME~1\MYDOCU~1\MYJAVA~1>java
ExchangeReferences
123
C:\DOCUME~1\MYDOCU~1\MYJAVA~1>
だそうです。なんとなく「123」になるのはわかるんです。「b=a」のところで上書きされたというかんじですよね。多分これが「a=b」だったらまた結果はちがいますよね。「参照型(クラス)」で宣言する変数はあくまでも「別名」であるからだということだと思うのですが、しっかり言葉として説明することはできません。。。とりあえず今のところはそれで良しとしときます。
このままつまづいたらここをもう一度しっかり学習しなおすということで。
しっかりひとつひとつ頭に入れていくと感覚としてわかってくるものだと思います。ひとつずつしっかりとつまづいたらまた、前にもどってみたいな感じでやっていければと。。。しかし、この時点でJavaスゴク楽しいです。好きです。
以上、次回また理解を深めて。。。
コメント