「Java/文法/クラス」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎コンストラクターのあるクラスのインスタンスの配列化とprivateメンバー・メソッド: #インスタンスの配列化で紹介したコードを、privateメンバー・コンストラクター・メソッド・初期化された配列と拡張for文の組合せで再実装すると、下記のように整頓されたコードになります。
タグ: 2017年版ソースエディター
286 行
Javaのコンストラクタはひとつのクラスにつき原則ひとつだが、例外的に、引数の型によって処理を変える場合はそれぞれの引数の型に応じたコンストラクタを別々に書ける。よって、引数の型で処理を変える場合は、ひとつのクラス内のコンストラクタの個数が複数になる。
 
== コンストラクターのあるクラスのインスタンスの配列化とprivateメンバー・メソッド ==
[[#インスタンスの配列化]]で紹介したコードを、privateメンバー・コンストラクター・メソッド・初期化された配列と拡張for文の組合せで再実装すると、下記のように整頓されたコードになります
 
;[https://paiza.io/projects/rWvTXBUYGzPl5y-con-CvA?language=java ClassSyntax2.java]:<syntaxhighlight lang="Java"java line highlight="122-153,10-12,17-1920,22-24" line>
class Product {
private String name;
private int price;
 
Product(String name, int price) {
this.name = name;
this.name = name;
this.price = price;
}
 
public void println() {
System.out.println(String.format("%sの単価は%d円", name, price));
}
}
 
class ClassSyntax2 {
public static void main(String[] args) {
Product[] drinks = {
new Product("牛乳", 150),
new Product("コーヒー牛乳", 180),
};
 
for (Product drink: drinks) {
System.outdrink.println(drink.name + "の単価は" + drink.price + "円");
}
}
}
}</syntaxhighlight>
}
}</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
牛乳の単価は150円
コーヒー牛乳の単価は180円
</syntaxhighlight>
:メンバーを private にすることで、フリーハンドなメンバーへのアクセスを禁止しカプセル化を実現しています。
 
:メンバーを private にしたので、表示を行う手続きをメソッド化しました。
:この際、表示イメージとコードを近づけるため、<code>String.format("%sの単価は%d円", name, price)</code>のように書式化メソッドを使用しました。
 
[[カテゴリ:Java]]