第13講 クラスの学習
第2話 人クラス
では、人クラス(人一般=人の雛形=人の設計図)を作ってみましょう。
Java入門の場合
public class h{
String n; //名前を入れる変数の雛形
String k; //肩書きを入れる変数の雛形
double s; //身長を入れる変数の雛形
double t; //体重を入れる変数の雛形
}
これが人クラスです。
えっ?!これってmainがないじゃない?
そうです。
これは単独では使えません。
このクラスは、mainのあるクラスのためのクラスです。
これをh.javaのファイル名で保存してください。
そして、次のコードを作り、
import java.io.*;
class a{
public static void main(String args[]){
h taro = new h();
taro.n="太郎";
taro.k="社長";
taro.s=172.6;
taro.t=58.5;
System.out.println(taro.n);
System.out.println(taro.k);
System.out.println(taro.s);
System.out.println(taro.t);
}
}
実行結果
EclipseによるJava入門の場合
Ecipseを起動して、
ファイル→新規作成→としてJava プロジェクトをクリックしてください。
プロジェクト名に『はじめてのJava』
(『はじめてのJava』はすでに使用しているので他の名前の方がよいですが、
この名前をつけたという前提で話を進めます。)
と入力して完了ボタンをクリックします。
はじめてのJavaをダブルクリック
srcをダブルクリック
デフォルト・パッケージを右クリック
新規→クラスをクリック
名前をhとして完了をクリック
次のようにコーティング
public class h{
String n; //名前を入れる変数の雛形
String k; //肩書きを入れる変数の雛形
double s; //身長を入れる変数の雛形
double t; //体重を入れる変数の雛形
}
再び
デフォルト・パッケージを右クリック
新規→クラスをクリック
名前をaとして完了して次のようにコーティング
public class a{
public static void main(String args[]){
h taro = new h();
taro.n="太郎";
taro.k="社長";
taro.s=172.6;
taro.t=58.5;
System.out.println(taro.n);
System.out.println(taro.k);
System.out.println(taro.s);
System.out.println(taro.t);
}
}
(EclipseによるJava入門の場合import java.io.*;がないことに注意!)
そして、実行ボタンを押します。
(実行方法を選ぶ画面が出たらJavaアプリケーションを選び(ただし、この画面が出ないこともあります。)、)
保管して起動のOKを押します。
クラスh()は、人一般クラスです。
言い換えると、人の雛形または設計図です。
人一般という雛形または設計図から、taraという具体的な人を作り出します。
運動会の通知の雛形から、具体的な2012/08/05の通知文を作るのと同じです。
機械の設計図から実際の機械を作るのと同じです。
具体的な人taraを発生させるには、
h taro = new h();
とします。人雛形hから新しくtaroという具体的な人を生み出すというわけです。
雛形から、実体化させることを、オブジェクトを作るとか、インスタンスを作るといいます。
雛形=設計図からから実際の物を作る、これをオブジェクト化=インスタンス化といいます。
雛形=設計図から作られた変数をインスタンス変数といいます。
この例でいうとインスタンス変数は、
taro.n
taro.k
taro.s;
taro.t
nは人雛形=人の設計図=人クラスで、
String n; //名前を入れる変数の雛形
String型の変数として定義されていました。
この定義では、String型の変数という以上の意味はありませんが、
プログラマーは名前を入れる変数として用意しています。
ですから、nameなどと書くように入門書や入門サイトでは推奨するわけですが、
そのように書いたとしても、
コンピュータは、ただ文字型の変数の雛形=設計図が定義されたとしか受け取りません。
ですから、
String n;
と書いても
String name;
と書いても1つの文字型の変数雛形が用意された以上の意味はないわけです。
String name;と書けば、初心者の方はここに意味があると思ってしまうので、
私は、入門書等で推奨されているこの書き方は誤解を与えるだけで、弊害しかないと思います。
確かに、
String n;
と書いたのでは、プログラマーにとってそれが何を意味しているかわかりません。
ですから、注釈文を入れて
String n; //名前を入れる変数の雛形
とすればよいのです。
コンピュータにとっては、String型の箱の設計図を1つ用意したにすぎませんが、
プログラマーにとって、nは名前を入れる変数の設計図であることがわかります。
プログラマーにとって、
taro.n
はtaroの名前を入れる変数ですし、
taro.k
はtaroの肩書きを入れる変数です。
.は『の』を意味します。
ですから、taro.nでtaroのnです。
ところで、なぜh.javaというファイルをa.javaは参照できるのでしょうか。
その答えは、
import java.io.*;
*はすべてという意味です。
ですから、import java.io.*;はjavaに関係するファイルをすべてインポートしなさいという意味です。
インポートとは取り込みです。
ということは、import java.io.*;はjavaに関係するファイルをすべて取り込みなさいという意味になります。
C言語やC++に馴染みの方は、インクルード(読み込み)を思い浮かべるでしょうが、
まさに、そのイメージは正解です。
インポート(取り込み)される結果、a.javaはhクラスを参照できるのです。
ところで、EclipseによるJava入門の場合は、import java.io.*;がなくても参照できました。
理由は、画面をもう一度見るとわかります。
デフォルト・パッケージの中に2つのファイルがあるからです。
パッケージですから、最初から組んでいるものと見なされるのです。
では課題です。
インスタンスjiroさんとhanakoさんを作って
としてください。
第1話へ 第3話へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第2部
初心者のための
VC++による C言語 入門 C++ 入門 基礎から応用まで第3部