クラスの基本
Data.java
1 class Data { 2 3 //フィールド インスタンス変数 4 private String name; 5 private int height; 6 private int weight; 7 8 //コンストラクタ 9 Data(String name,int height,int weight) { 10 this.name = name; 11 this.height = height; 12 this.weight = weight; 13 } 14 15 //これ以降、メソッド 16 String getName() { 17 return name; 18 } 19 20 void print() { 21 System.out.println("Name="+name+"\nheight="+height+"\nweight="+weight); 22 } 23 24 }
DataTest.java
1 class DataTest { 2 3 public static void main(String[] args){ 4 //クラス型変数data 5 Data data = new Data("rdera",170,60); 6 7 //インスタンスメソッドの呼び出し 8 data.print(); 9 } 10 11 }
実行してみる
$ javac Data.java $ javac DataTest.java $ java DataTest Name=rdera height=170 weight=60 $
学んだこと
以下の式のようにしてインスタンスを生成する。これをインスタンス化と呼ぶ。
new クラス名(引数);
生成したインスタンスへの参照は以下の式のようにクラス型変数を宣言して関連付ける。
クラス名 クラス型変数名 = new クラス名(引数);
このように一気に書いてもいいし。以下のような書き方もできる。
new クラス名(引数); クラス名 クラス型変数名 = クラス名;
xが参照するインスタンス内のメンバyにアクセスするには以下の式
x.y
修飾子privateを付けて宣言されたフィールドは外部からアクセスできない。同一クラス内でのみアクセス可能。
以下のようにフィールドに直接アクセスすることはできない。
data.name//エラー
では、どうやってprivate付きフィールドに外部クラスからアクセスするのか。
クラスの中で修飾子privateを付けたフィールドをreturnするメソッドを宣言して、それにアクセスする。
data.getName();
コンストラクタはインスタンスが生成されたときに呼び出される。
それにより、インスタンスを初期化する。
this参照により、仮引数の名前を考える手間が省ける。
this参照を利用しないと、以下のようにしなければならない。
//コンストラクタ this参照を使わない場合 Data(String n,int h,int w) { name = n; height = h; weight = w; }