Blacky Blog

外資系IT企業でエンジニアをしています。 ここでは自分が読んだ本、勉強していることなど None Tech の情報を発信しています。

IT プログラミング

[初心者向け] Java 独学: 4. オブジェクト指向: インスタンス化して使用する

投稿日:6月 5, 2019 更新日:

みなさん、こんにちは。

このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイトや本を読んで学んだだけの方でも、挫折せず、自分で手を動かせるような構成にしていますのでおすすめの方法です。

CodeCampGATE

[初心者向け] Java 独学: 4. オブジェクト指向: インスタンス化して使用する

前回まででクラスについては紹介しました。

今回はクラスを使う側の視点で、どのようにクラスを使うのかについて紹介します。サンプルコードです。

まずは、Carクラス。前回と同じものです。

public class Car
{
    // Member variables
    private String model = null;
    private String nextValidatedate = null;
    private String owner = null;

    // Constructors
    public Car()
    {

    };
    public Car(String model, String nextdate, String owner)
    {
        this.model = model;
        this.nextValidatedate = nextdate;
        this.owner = owner;
    };

    // Member mothods
    public void SetModel(String model)
    {
        this.model = model;
    };
    public void SetnextValidatedate(String nextDate)
    {
        this.nextValidatedate = nextDate;
    };
    public void SetOwner(String owner)
    {
        this.owner = owner;
    };
    public String GetModel()
    {
        return this.model;
    };
    public String GetnextValidatedate()
    {
        return this.nextValidatedate;
    };
    public String GetOwner()
    {
        return this.owner;
    };
}

続いて、Car クラスを使うアプリです。このアプリがクラスを使う側になります。

import Car;
import java.time.LocalDate;

public class Lesson4_Class
{
    public static void main(String[] arg)
    {
        Car mycar = null;
        mycar = new Car("Audi Q5",LocalDate.now().plusYears(2).toString(),"Blacky Taro");
        System.out.println(
            String.format("Registerd Mycar! model:%s, Owner: %s NextValidationdate: %s",
                mycar.GetModel(),mycar.GetOwner(),mycar.GetnextValidatedate() )
        );
        return;
    }
}
実行結果

初期化

クラスを使う場合、変数のように扱います。以下のコードは初期化といい、Car クラスの mycar という変数を null で初期化しています。null は何も入っていないよという印、記号のようなものです。つまり、この時点では、Car クラスの mycar 変数には何も入っていません。何も入っていないだけでなく、データを保持しておく場所がない状態です。

    Car mycar = null;

データを保持しておく場所がない状態とはどういうことか説明すると、以下のコードを実行するとエラーになります。

        Car mycar = null;
        mycar.GetModel();

GetModel メソッドは、Car クラスのメンバー関数でしたね。やっていることは、Car クラスのメンバー変数である、model が返ってくるはずです。が、値が返ってくるどころか、エラーになりました。

これは、何も入っていないデータにアクセスしようとしたためです。これは空文字とは意味が違います。空文字は空文字という文字が入っているので空文字が入っているわけなのでエラーにはならず空文字が返ってきます。null はデータを格納する場所がない状態なので、model, owner, などのメンバー変数の値を入れる場所がそもそもない状態です。

では、どうすればデータを格納する場所が確保できるかというと、インスタンス化が必要になります。

CodeCampGATE

インスタンス化

では、以下のコードに変更します。

        Car mycar = null;
        mycar = new Car();
        mycar.GetModel();

すでに前回触れましたが、インスタンス化するにはコンストラクタを実行します。これで変数に必要なデータの場所が確保された状態になります。

これでGetModl を呼び出してもエラーにならず、モデルになにも設定していないため空文字が返ってきます。

メンバー変数へのアクセス

Car クラスのメンバー変数をpublic に変更してみましょう。

public class Car
{
    // Member variables
    public String model = null;
    public String nextValidatedate = null;
    public String owner = null;

すると、使用する側で “car.” とタイプすると、3つのメンバー変数が出力されるようになりました。

public は別のクラスでも利用できることを意味しているためです。public のメンバー変数は、使用する側から値を読んだり、設定したりできます。

        Car mycar = null;
        mycar = new Car();
        mycar.model = "Lexus RX";

メンバー関数へのアクセス

続いてメンバー関数です。まずは、使用する側で “mycar.” と打つと public のメンバー関数が出てきます。

試しに、SetModel を private にすると、以下の通り、SetModel だけ出てこなくなります。

クラスのインポート

このようにクラスにアクセスできる方法を紹介しましたが、そもそもどうやってCar クラスを使う側で利用できるようにしているかというと、1行目を見てください。

Car クラスを import すればアクセスできるようになります。なお、Car クラスを定義しているJavaファイルは同じ階層に置いています。

まとめ

クラスはプログラミングが面白くなってくる部分です。クラスをどうのようにデザインするかはプログラマの腕の見せ所です。ぜひ試してみてください。

CodeCampGATE

-IT, プログラミング
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

今注目されている IT 分野を調べてみた(2019年5月現在)

みなさん、こんにちは。 今日はどんな IT のどの ジャンルのが人気なのか、本屋さんに並んでいる数をベースに検証してみたのでご紹介します。 “ITは必須である。” この言葉を聞いて疑問を抱く人はいない …

[初心者向け] Java 独学: 5. コンパイルとデバッグ: 例外処理: その 1

みなさん、こんにちわ。 このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイト …

ネットワークエンジニアとしての基礎: 3. プロトコルとサービスの理解: OSI モデル

みなさん、こんにちは。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …

ネットワークエンジニアとしての基礎: 2. ハードウェアの理解: メディアの種類

みなさん、こんにちは。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …

[初心者向け] Java 独学: 2. データ型、変数式を理解する: データ型

みなさん、こんにちは。 このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイト …