お品書き
- オブジェクトの使い方って?
- Sample
◆オブジェクトの使い方って?
設計図クラスを基にオブジェクトを作って利用するには大きく2つのステップを踏む
まず、オブジェクトを生成し、次にオブジェクトの持っている変数やメソッドを利用する
①生成
java
クラス名 オブジェクト名 = new クラス名();
Student stu1 = new Student();
前回の設計図編を参考
上記のコードでnewした時、メモリ上に新しく領域が確保され、3つの変数の領域と3つのメソッドの情報が含まれるイメージの図↓
stu1
にはいる値は配列の時と同様で参照値のため、メモリ上にできたアドレス値が変数に代入される。
みたいな。
配列をnewで作ると入れ物の中にはデフォルト初期値が入った。
例えば、基本データ型の数値は0、char型は空文字(' ')、真偽値はfalseで、参照値は何も入らない。
上記のメモリ領域A001の図で言えば、nameには何も入らず、2つのスコアの値は0が入った状態でメモリ上に領域が確保される。
プログラムにおいてオブジェクトを作ることをインスタンス化という。
プログラムの中で実際にできたオブジェクトをインスタンスと呼んだりもする。
②変数・メソッドを利用
java
オブジェクト名.変数名
オブジェクト名 メソッド名(引数)
stu1.name = "大輔";
stu1.setScore(80,90);
stu1の先にあるnameに大輔という文字列を代入してくださいという意味。
◆Sample
java
class StuSample{
public static void main(String[] args){
Student stu1 = new Student(); //インスタンス化
stu1.name = "大輔";
stu1.setScore(90,80); //ここを呼び出すと設計図クラスのsetScore()の処理が実行される
stu1.display();
System.out.println("平均" + stu1.getAvg() + "点"); //getAvgの値にStudentクラスのreturn avgの値が返ってくる
}
}
前回の設計図編のSample参照
java
class Student{
//メンバー変数(属性)
//変数宣言はクラス名直下
String name;
int engScore;
int mathScore;
//メソッド(操作)
void display(){
System.out.println( name + "さん");
System.out.println("英語" + engScore + "点・数学" + mathScore + "点");
}
void setScore(int eng, int math){ //mainクラスの90,80が[0],[1]で格納される
engScore = eng;
mathScore = math;
}
double getAvg(){
double avg = (engScore + mathScore) / 2.0;
return avg; //計算結果の85.0がreturnで呼び出し元に戻っていく
}
}
mainメソッドが含まれているjavaファイルをコンパイル&実行
cmd
C:\Java\1>javac StuSample.java
C:\Java\1>java StuSample
大輔さん
英語90点・数学80点
平均85.0点
名前と各教科の点数を設計図クラスのdisplayメソッドで出力し、メインメソッドで平均点を出力できました。