Java Basic クラスとは〜Step2_1〜

イントロダクション

Javaでの文法をちょっとやると「クラス」という言葉が出てきます。「インスタンス」とか、「オブジェクト」なんて言葉も一緒に出てきます。

インスタンスとは

クラス(ファイルに記述したもの)の「コンストラクタ」の処理を通った後に出来る、オブジェクト。

<例>

ホームページにログインするとインスタンスが1個作られます。→ログイン処理でユーザーをあらわすクラスのコンストラクタでDBから取得した情報を保持します。この保持するためのオブジェクトの事をインスタンスと呼びます。

オブジェクトとは

構造体、クラスの事。データをセットしたり、ゲットしたり、何かの処理を行ったりします。構造体はクラスと同じ様な意味です。細かい所は混乱するので省きます。

オブジェクトはインスタンス化出来る。→コンストラクタを通らなければオブジェクトで、通ればインスタンス。

<サンプルコード>

public class MyCls {
   //コンストラクタ
   public MyCls() {
   this.age = 3;
   }

   //フィールド変数
   private String name;
   private int age;
   //メソッド
   public void setName(String name) {
  this.name = name;
   }
}

カプセル化とは

上記の様にフィールドへのアクセス(name)にはクラスの外からアクセス出来なくする事→MyCls.name = “”;はエラーになる。

ちなみにフィールドをpublic String name;と書くと外部からアクセス出来る。→MyCls.name = “”;エラーにならない

クラスの構成のコメントをつけております。

サンプルはこちら

/** 外部の提供されているクラスをインポートする */
package jp.zenryoku.sample.cls;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* javaAPIの使い方
* @author takunoji
*/
// クラス定義
public class Step2_1 {
// フィールド変数:クラスの全てのメソッドからアクセスできる
private String FIELD_HENSU="クラスの外からはアクセスできません。";
public String FIELD_HENSU2="クラスの外からはアクセスできます。";

// メインメソッド(必ずこの書き方になる)
public static void main(String[] args) {
    Step2_1 step = new Step2_1();
    // 入力を受け取り切らない場合は次のStreamに読み込まれる
    //123456step.arrayTest1();
    step.arrayTest2();
}
// 自作のメソッド(メンバメソッドともいう)
public void arrayTest1() {
   System.out.println("test1 入力開始");
   // バイト型の配列をサイズ5で作成する
   byte[] moji = new byte[5];
 // エラーハンドル用のくくり
   try {
    // 標準入力から入力を受け取る
         System.in.read(moji);
   } catch(Exception e) {
         e.printStackTrace();
   }
 // 入力は「バイト型」のデータなのでString型(参照型)を生成する
   System.out.println("入力じた文字:" + new String(moji));
}

public void arrayTest2() {
    System.out.println("test2 入力開始");
    // 読み込み用のクラスを宣言する
    BufferedReader read;
  // InputSreamReaderからBufferedReaderを作成する
  // System.in→標準入力、読み込むために上のクラスでラッップ(包む)して
  // 使用する。ラップとは System.inをInputSreamReaderで包む(拡張)する
  // ことを言います。
    read = new BufferedReader(new InputStreamReader(System.in));
    String line = "";
    try {
     // BufferedReader.readLineメソッドで1行読む。
     // Fileなどを読み込む時にも使用する
           line = read.readLine();
    }catch(IOException e) {
            e.printStackTrace();
    }
         System.out.println("入力じた文字:" + line);
    }
}

「public class クラス名」全ての人がアクセスできるクラスですよ、と定義する
「private class クラス名」クラスの中からのみアクセスできるクラスと定義する

「public 返却値 メソッド名」クラスの外からもアクセスできるメソッド
「private 返却値 メソッド名」クラスの中からのみアクセスできるメソッド

フィールド変数に関して、今回は使用していません。

Systemクラスについて
標準入力、出力、Javaの強制終了などJavaシステムの
基盤的なアプリケーションの機能を実装している。

クラス 変数名 = new クラス名();という書き方では
メソッドを使用できません。→その様に実装しているからです。

このクラスにあるメソッドはスタティックメソッドと呼ばれます。
public static out; // フィールド変数です。
プログラム上では「System.out.println();」と使用してます。
Systemクラスのフィールドout(PrintSream)のメソッド
「println()」メソッドを使用して標準出力に文字を表示しています。
逆に、「in」は標準入力です。

スタティックメソッドはクラスをnewしないで直接
クラス名.メソッド名の形で呼び出します。