簡単JAVA説明⑭

Download Report

Transcript 簡単JAVA説明⑭

JAVA入門⑤
クラスの定義
(フィールド、メソッド、コンストラクタの定義)
簡単JAVA説明⑭
クラスとは?
" Hello " 、 " JAVA "と言う文字列は皆Stringクラスの
インスタンス(具体的なもの)を表します。
" "で囲った文字列はすべてStringクラスという
ことになります。すべて
・文字列を表現
・文字の長さを知ることができる。
・指定した位置の文字を知りえる。
・他の文字と等しいかを調べられる。
という共通の性質を持ちます。
簡単JAVA説明⑭
クラス解説
つまりクラスとは
「クラス(class)はオブジェクト指向プログラミングの
基本的な仕組みを提供します」
インスタンス(オブジェクトとも言います)が持つ
① フィールド(別名 性質、属性、アトリビュート、プ
ロパティ)
② メソッド(別名 関数、ファンクション)
を定義。
①,②を総称してメンバといいます。
簡単JAVA説明⑭
1.クラスの宣言
class クラス名 {
型 フィールド;
:
型 メソッド() { ... }
:
}
●クラスは大文字で始める。
●フィールドは変数、メソッドは関数
●フィールド、メソッドがクラスを決定
簡単JAVA説明⑭
2.インスタンス(オブジェクト)の作成
あるクラスのインスタンスを作成するには、new を
用います。例えば、TestClass という名前のクラスの
インスタンスを作るには次のようにします。
TestClass o = new TestClass();
これは本質的に配列の例
int test = new int[3];
と同じです。
簡単JAVA説明⑭
3.例 (テキスト P221も参照)
// Testクラス
class Test {
int no;
double score;
}
// Testクラスのインスタンス作成
class Sample1{
Test test;
test = new Test();
}
簡単JAVA説明⑭
// Testクラスのインスタンス作成
class Sample1{
Test test;
test = new Test();
}
は
class Sample1{
Test test = new Test();
}
とも書けます。
簡単JAVA説明⑭
4. メンバへのアクセス
3の例で作成したインスタンス
Test test = new Test();
に対し、
test.no = 1;
test.score = 85;
と表記すると
これは
testのnoフィールドが1
testのscoreフィールドが85
と読めます。
簡単JAVA説明⑭
フィールドは代入のみならず、
System.out.prinln("Noは" + test.no);
System.out.prinln("点数は" + test.score);
と記述すれば代入した内容が表示される。
簡単JAVA説明⑭
5.クラスの利用
クラス利用のプログラム => Sample1
Testクラス
+
main()メソッド
実行結果
Noは1
点数は85.0
簡単JAVA説明⑭
// Testクラスのクラス
class Test{
int no;
double score;
}
// Testクラスのインスタンス作成
class Sample1{
public static void main(String args[]){
Test test = new Test();
test.no = 1;
test.score = 85;
System.out.println("Noは" + test.no);
System.out.println("点数は" + test.score);
}
}
簡単JAVA説明⑭
注意点
Sample1.javaをコンパイルすると
Sample1.class とTest.classが作成される。
ソースファイルには2つの「クラス」があるため
2つのクラスファイルが作成される。
同じファルダに入れておけば、実行は今までと同様。
java Sample1
で実行される。
簡単JAVA説明⑭
6.2つ以上のインスタンスの作成
●インスタンスは2つ以上作成可能です。
Test test1 = new Test();
test1.no = 1;
test1.score = 10;
Test test2 = new Test();
test2.no = 2;
test2.score = 20;
test1とtest2は別のnoとscoreを持ちます。
簡単JAVA説明⑭
7.メソッドの定義
メソッドは関数(機能)でした。
戻り値の型 メソッド名(引数)
{
文;
・・・;
rreturn 式;
}
簡単JAVA説明⑭
例
class Test
{
int no;
double score;
void show()
{
System.out.println("Noは" + no);
System.out.println("点数は" + score);
}
}
簡単JAVA説明⑭
解説
Sample1の表示の部分をメソッド化
次に、Sample1の中で、これを考えることとします。
簡単JAVA説明⑭
8.メソッドの呼び出し
構文
インスタンスを指す変数名.メソッド(引数);
例
class Sample2
{
public static void main(String args[]);
{
Test test = new Test();
Test.show();
}
}
簡単JAVA説明⑭
// TESTクラス
class Test{
int no;
double score;
void show(){
System.out.println("Noは" + no);
System.out.println("点数は" + score);
}
}
簡単JAVA説明⑭
// メイン
class Sample2{
public static void main(String args[]){
Test test = new Test();
test.no = 1;
test.score = 85;
test.show();
}
}
簡単JAVA説明⑭
実行結果
Noは1
点数は85.0
簡単JAVA説明⑭
9.フィールドおよびメソッドへのアクセス
●フィールドへのアクセス
Sample2 メインの
test.no = 1;
test.score = 85;
がフィールドへのアクセスです。
簡単JAVA説明⑭
またTESTクラスは
自身であることを強調してthisをつけて
class Test{
int no;
double score;
void show(){
System.out.println("Noは" + this.no);
System.out.println("点数は" + this. score);
}
}
のように書くこともできます。
簡単JAVA説明⑭
●メソッドへのアクセス
Sample2 メインの
test.show();
がメソッドへのアクセスです。
簡単JAVA説明⑭
●クラスの中で、クラスのメソッドを使っている場合は
何もつけないか、this.で記述します。
class Test1{
int no;
double score;
void show(){
System.out.println("Noは" + this.no);
}
void showTest(){
this.show();
}
}
簡単JAVA説明⑭
// メイン
class Sample3{
public static void main(String args[]){
Test1 test = new Test1();
test.no = 1;
test.score = 85;
test.showTest();
}
}
簡単JAVA説明⑭
10.メソッドの引数
呼び出しもとからメソッドに情報を渡し、その値に応じた処理を
おこなうこ
とができます。
例
void setNo(int m){
no = m;
System.out.println("Noは" + no);
}
mには呼び出しもとから渡された値が入っています。
簡単JAVA説明⑭
点数に関しても、以下のメソッドを考えます。
void setScore(double s){
score= s;
System.out.println(“点数は" + score);
}
ここではdouble型の引数が渡されてきます。
●注意!
当然のことですが、渡す引数の値が変われば、結果も変わりま
す。
簡単JAVA説明⑭
// TESTクラス
class Test{
int no;
double score;
void setNo(int m){
no = m;
System.out.println("Noは" + no);
}
void setScore(double s){
score= s;
System.out.println(“点数は" + score);
}
void show(){
System.out.println("Noは" + no);
System.out.println("点数は" + score);
}
}
簡単JAVA説明⑭
// メイン
class Sample4{
public static void main(String args[]){
Test test = new Test();
test.setNo(2) ;
test.setScore(45.5);
test.show();
}
}
実行結果
Noは2
点数は45.5
Noは2
点数は45.5
簡単JAVA説明⑭
11.メソッドの戻り値
引数により呼び出しもとから値を引継ぎました
が、値を戻せないか?という疑問が湧くかと思
います。
メソッドの呼び出しもとに特定の情報を返すこと
ができます。その情報を「戻り値」と言います。
構文
戻り値の型 メソッド(引数) <=戻り値の型にする!
{
文;
return 式;
}
簡単JAVA説明⑭
例
int getNo()
{
System.out.println(“Noを指定します");
return no;
}
double getScore()
{
System.out.println("点数を指定します");
return score;
}
簡単JAVA説明⑭
// TESTクラス
class Test{
int no;
double score;
int getNo()
{
System.out.println(“No確認");
return no;
}
double getScore()
{
System.out.println(“点数を確認");
return score;
}
簡単JAVA説明⑭
void setNo(int m){
no = m;
System.out.println("Noは" + no);
}
void setScore(double s){
score= s;
System.out.println(“点数は" + score);
}
void show(){
System.out.println("Noは" + no);
System.out.println("点数は" + score);
}
}
簡単JAVA説明⑭
class Sample5{
public static void main(String args[]){
Test test = new Test();
test.setNo(2) ;
test.setScore(45.5);
int num = test.getNo();
double ten = test.getScore ();
System.out.println(" numは" + num);
System.out.println(“tenは" + ten);
}
}
簡単JAVA説明⑭
実行結果
Noは2
点数は45.5
No確認
点数を確認
numは2
tenは45.5
簡単JAVA説明⑭
質問
void() の戻り値は何?
答え
void()は戻り値のないメソッドです。
逆に言えば、戻り値のないメソッドを作成したい
場合はvoid()を使います。
テキストP254参照
簡単JAVA説明⑭
12.コンストラクタの定義
構文
修飾子 クラス名(引数リスト)
{
文;
・・・;
}
簡単JAVA説明⑭
例
public Test()
{
no = 0;
score = 0.0;
System.out.println(“TEST雛型”);
}
簡単JAVA説明⑭
コンストラクタとは?
一言で言うと、「初期化」です。
正確に言うとインスタンス(オブジェクト)の
「初期化」をする仕組みです。
●特徴
1.コンストラクタには戻り値の型がない。
2.コンストラクタの名前はクラス名と同じ。
簡単JAVA説明⑭
13.コンストラクタの呼び出し
メインの中で、
Test test = new Test();
のように記述します。これでコンストラクタが呼び出さ
れます。
-簡単JAVA説明⑭
class Test{
int no;
double score;
public Test()
{
no=0;
score = 0.0;
System.out.println(" TEST雛型");
}
void show(){
System.out.println("Noは" + this.no);
System.out.println("点数は" + this. score);
}
}
簡単JAVA説明⑭
// メイン
class Sample4{
public static void main(String args[]){
Test test = new Test();
test.show();
}
}