JAVA入門

JAVA入門⑥
クラスとインスタンス
簡単JAVA説明⑮
前回の復習
1.クラス
クラスの生成
2.フィールド
3.メソッド
定義と呼び出し(引数、戻り値)
4.コンストラクタ
定義と呼び出し
簡単JAVA説明⑮
クラス変数とクラスメソッド
1.インスタンス変数とインスタンスメソッド
次に示す例では、クラスTESTに関するインスタンス(オブジェクト)を作成した
際、それぞれの、no、scoreには値の入出力が可能でした。
各インスタンス毎にフィールドの値を格納可能でした。
この場合、フィールドno、scoreは
「インスタンス(オブジェクト)に関連付けられている」
と言うことがあります。
インスタンス(オブジェクト)に関連付けられているフィールドを
「インスタンス変数」
インスタンス(オブジェクト)に関連付けられているメソッドを
「インスタンスメソッド」
と言います。
簡単JAVA説明⑮
// Testクラスのクラス
class Test{
int no;
double score;
void show(){
System.out.println("Noは" + no);
System.out.println("点数は" + score);
}
}
簡単JAVA説明⑮
// Testクラスのインスタンス作成
class Sample1{
public static void main(String args[]){
Test test1 = new Test();
test1.no = 1;
test1.score = 85;
test1.show();
Test test2 = new Test();
test2.no = 2;
test2.score = 75;
test2.show();
}
}
簡単JAVA説明⑮
2.クラス変数とクラスメソッド
クラスではインスタンス(オブジェクト)に関連づ
けられていないメンバを持つことができます。
これを
「クラス全体に関連づけられている」
ということがあります。
クラスに関連づけられているフィールドを
「クラス変数」
クラスに関連づけられているメソッドを
「クラスメソッド」
と言います。
簡単JAVA説明⑮
クラス変数の構文
class クラス名
{
static 型名 クラス変数名;
}
クラスメソッドの構文
static 戻り値の型 クラスメソッド名(引数)
{
文;
}
簡単JAVA説明⑮
特徴
必ず、宣言のとき、定義のとき
staticという修飾子をつけます。
簡単JAVA説明⑮
// Testクラスのクラス
class Test{
public static int sum = 0;
private int no;
private double score;
public Test()
{
no = 0;
score = 0.0;
sum++;
System.out.println("Noは" + no);
}
void show(){
System.out.println("Noは" + no);
System.out.println("点数は" + score);
}
簡単JAVA説明⑮
5.privateとpubblic
メンバへのアクセスの制限
class Test
{
int no;
double score;
void show()
{
System.out.println("Noは" + test.no);
System.out.println("点数は" + test.score);
}
}
簡単JAVA説明⑮
// Testクラスのオブジェクト作成
class Sample1{
public static void main(String args[]){
Test test = new Test();
test.no = 1;
test.score = 85;
test.show();
}
}
上記のプログラムではテストNoと点数scoreに値を代入してい
ます。
簡単JAVA説明⑮
もし、間違って、
test.score = -85;
などとしてしまったら・・・
そのような場合を避ける方法がJAVAにはあります。
クラスの外から勝手にアクセスできないようなメンバと
しておくことができます。これをprivateメンバと言いま
す。以下のようにプログラムを書き換えます
簡単JAVA説明⑮
class Test
{
private int no;
private double score;
void show()
{
System.out.println("Noは" + test.no);
System.out.println("点数は" + test.score);
}
}
簡単JAVA説明⑮
// Testクラスのオブジェクト作成
class Sample1{
public static void main(String args[]){
Test test = new Test();
test.no = 1;
test.score = 85;
test.show();
}
}
簡単JAVA説明⑮
コンパイルしてみると
C:\Jsample>javac Sample1.java
Sample1.java:17: no は Test で private アクセスされ
ます。
test.no = 1;
^
Sample1.java:18: score は Test で private アクセスさ
れます。
test.score = 85;
のようなコンパイルエラーが出ます。
簡単JAVA説明⑮
publicメンバの作成
privateメンバですと、クラスの外からアクセスできませ
んが、 publicメンバとした場合、外からのアクセス
が可能となります。
class Test
{
public int no;
public double score;
void show()
{
System.out.println("Noは" + this.no);
System.out.println("点数は" + this.score);
}
}
簡単JAVA説明⑮
// Testクラスのオブジェクト作成
class Sample1{
public static void main(String args[]){
Test test = new Test();
test.no = 1;
test.score = 85;
test.show();
}
}
簡単JAVA説明⑮
修飾子( privateとpubblic )
privateとpubblicは修飾子と呼ばれています。
private・・・「自クラスからのアクセスしか許さない」
pubblic・・・「すべてのクラスからの参照を許す」
と言う意味合いです。
修飾子は省略が可能です。
省略したメンバは「同じパッケージ」内に含まれ
るクラス内からアクセスできます。
簡単JAVA説明⑮
演習1.①~⑥を埋めよ。
class Person {
String myName;
int myAge;
public void SetName(String name) {
myName = name;
}
public String GetName() {
return myName;
}
public void SetAge(int age) {
myAge = age;
}
public int GetAge() {
return myAge;
}
}
簡単JAVA説明⑮
class PersonTest {
public static void main(String[] args) {
①
②
③
④
⑤
⑥
// 田中さんインスタンスを作る
// 田中さんの名前を設定する
// 田中さんの年齢を設定する
// 鈴木さんインスタンスを作る
// 鈴木さんの名前を設定する
// 鈴木さんの年齢を設定する
System.out.println(tanaka.GetName());
System.out.println(tanaka.GetAge());
System.out.println(suzuki.GetName());
System.out.println(suzuki.GetAge());
}
}
簡単JAVA説明⑮
実行結果
Tanaka
26
Suzuki
32
簡単JAVA説明⑮
演習1
ヒント
作るべき、クラスはPersonです。
System.out.println(tanaka.GetName());
System.out.println(suzuki.GetName());
から、作成するはインスタンス名はtanakaとsuzukiであることがわかります。