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

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎列挙型( enum ): 多くのモダンなプログラミング言語には、列挙型( enum )が提供されていますが、Java ではクラスとして定義されるので、フィールドやコンストラクターを含むメソッドも定義できます。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
用語の統一
タグ: 2017年版ソースエディター
1 行
== 定義方法 ==
コード例1:
;ClassSyntax.java:<syntaxhighlight lang="Java"java line>
/**
* 商品を表す。
39 行
; 解説
: 4行目から14行目までがクラス{{code|Product}}の、16行目から31行目までがクラス{{code|ClassSyntax}}の定義である。
: {{code|Product}}では、{{code|Product}}の実体 (インスタンスと呼ばれる) ごとに異なる値を持つことができる変数 (以下、インスタンス変数フィールドと呼ぶ) として{{code|name}}と{{code|price}}が宣言されている。
: {{code|ClassSyntax}}の{{code|main}}「メソッド」では、{{code|Product}}のインスタンスをnew演算子 (new演算子に到達したときに実行される処理群を「コンストラクタ」の中に記述することができる。
: コンストラクタについては後述) を用いて生成することができる。
51 行
で実行することになります。
 
C言語やC++とは異なり、Javaには「構造体」の概念を表すキーワード無いありませんが、メンバーを全て public にしたクラスが構造体( ''Struct'' )に相当します
 
== クラス変数とインスタンス変数フィールド ==
 
クラス内の上述<code>String name;</code>のような要素(フィールドという)を宣言する際、下記のようにstatic 修飾子をつけて宣言したら、そのフィールド要素を「クラス変数」という。
 
:;構文 :<syntaxhighlight lang="java">
class Product {
 
static String name; // クラス変数
}
</syntaxhighlight>
 
一方、static無しで宣言したらインスタンス変数フィールドという。
 
<syntaxhighlight lang="java">
class Product {
 
String name; // インスタンス変数フィールド
}
78 ⟶ 76行目:
 
 
インスタンス変数フィールドの所属先は、それのインスタンスを生成した呼出側である。よって、呼出側・呼び出され側のクラスと異なる第三の別クラスからは、直接的にはインスタンスの値を読み取ることはできない。
 
一方、クラス変数の所属先は、クラス自体にある。この仕様のため、比較的に容易に、第三のクラスからも値の読み書きがしやすい。
 
 
;ClassSyntax.java:<syntaxhighlight lang="Java"java line>
/**
* static を使わない場合
89 ⟶ 87行目:
class Product {
 
String name; // インスタンス変数フィールド
int price;
}
114 ⟶ 112行目:
 
 
;ClassSyntax.java:<syntaxhighlight lang="Java"java line>
/**
* static を使う場合
153 ⟶ 151行目:
下記のようなコードになる。
 
;ClassSyntax.java:<syntaxhighlight lang="Java"java line>
class Product {
String name;
200 ⟶ 198行目:
 
例2:
:<syntaxhighlight lang="java" line start="4" highlight="15-17,23-25">
class Product {
/**
234 ⟶ 232行目:
 
 
:構文 <syntaxhighlight lang="java">
class クラス名 {
 
252 ⟶ 250行目:
 
例3:
:<syntaxhighlight lang="java" line start="4" highlight="12-15,20-21">
class Product {
/**