「Java/文法/クラス」の版間の差分
削除された内容 追加された内容
用語の統一 タグ: 2017年版ソースエディター |
敬体に統一。 タグ: 2017年版ソースエディター |
||
38 行
; 解説
: 4行目から14行目までがクラス{{code|Product}}の、16行目から31行目までがクラス{{code|ClassSyntax}}の定義で
: {{code|Product}}では、{{code|Product}}の実体 (インスタンスと呼ばれ
: {{code|ClassSyntax}}の{{code|main}}「メソッド」では、{{code|Product}}のインスタンスをnew演算子 (new演算子に到達したときに実行される処理群を「コンストラクタ」の中に記述することができ
: コンストラクタについては後述) を用いて生成することができ
上記コードは、javacコマンドでコンパイルすると動きます。javaコマンドでインタプリタ的に実行してもエラーになります。
76 行
フィールドの所属先は、それのインスタンスを生成した呼出側で
一方、クラス変数の所属先は、クラス自体にあ
145 行
== インスタンスの配列化 ==
実際にクラスを使う場合は、インスタンスを配列にすると便利な場合も多い。その場合、配列の要素数だけ new 宣言が必要で
要素数が100個とか多い場合にnew を 100個書くのは非現実的であるが、安心してもいいことに for 文を使うことで機械にnew宣言を繰り返しさせる仕組みがあるので大丈夫で
下記のようなコードにな
;ClassSyntax.java:<syntaxhighlight lang=java line>
class Product {
String name;
int price;
}
159 行
class ClassSyntax {
public static void main(String[] args) {
▲ Product[] drink = new Product[2];
for(int i = 0; i < drink.length; i++){▼
}▼
drink[0].name = "牛乳";▼
drink[0].price = 150;▼
drink[
for (int i = 0; i < drink.length; i++) {
System.out.println(drink[i].name + "の単価は" + drink[i].price + "円");
▲ }
▲ }
}
</syntaxhighlight>
181 行
コーヒー牛乳の単価は180円
</syntaxhighlight>
== メソッド ==
先述のコードで、17行目から30行目は、{{code|main}}を{{code|ClassSyntax}}のメソッドとして定義してい
javaではクラスの中にしかメソッドを定義することができ
なお、特にクラスを新規作成する必要もなく単にメソッドを使いただけの場合なら、Hello Worldの定形文にあるクラス以外に新しいクラスを作る必要は無く、Hello Worldを作るときに書かれた既存のクラス内にそのまま追加したいメソッドを書けば済む。
ひとつのクラス内にメソッドはいくつあっても構わないです。
おおむね、C言語でいう「関数」に相当します
=== 引数 ===
メソッドは引数を持つことができ
;例2:<syntaxhighlight lang=java line start="4" highlight="15-17,23-25">▼
▲:<syntaxhighlight lang=java line start="4" highlight="15-17,23-25">
class Product {
/**
226 ⟶ 223行目:
}
</syntaxhighlight>
:構文 <syntaxhighlight lang=java>
class クラス名 {
アクセス修飾子 データー型1 フィールド名1;
アクセス修飾子 データー型2 フィールド名2;
// そのメソッドの処理;
}
246 ⟶ 238行目:
== コンストラクタ ==
コンストラクタを用いるとクラスの初期化を定型化でき、内部構造の詳細を隠蔽でき
コンストラクタの名前はクラス名です。
コンストラクタの戻値はありません。
;例:<syntaxhighlight lang=java line start="4" highlight="12-15,20-21">▼
▲:<syntaxhighlight lang=java line start="4" highlight="12-15,20-21">
class Product {
/**
282 ⟶ 274行目:
</syntaxhighlight>
Javaのコンストラクタはひとつのクラスにつき原則ひとつ
== コンストラクターのあるクラスのインスタンスの配列化とprivateフィールド・メソッド ==
|