0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Java学習メモ 1 インスタンス

Last updated at Posted at 2023-04-21

概要

プログラミングスクールを卒業して、転職活動中にProgateで主にJava、 MySQLを学習しています。
その際に、苦戦したところ、理解するために自分用のまとめとして書きます。

間違っていたらご指摘いただけると幸いです。

目次

  • インスタンス
  • インスタンスメソッド
  • インスタンスフィールド

インスタンス

オブジェクトとも言われる。クラスと言うインスタンスの設計図をもとに作成される。

主に、インスタンスで作成するのは
・インスタンスフィールド(インスタンスの情報)
・インスタンスメソッド(インスタンスの動作)

この2つを、インスタンスのクラスに記述していき、メインメソッドで呼び出すイメージ。

インスタンスの生成

インスタンスを作成する際は

ターミナル
new クラス名();

これで作成する。例えば、Mainクラスの他に、Personクラスを作ったならば、

Main.java
class Main{
    public static void main (String[] args) {
        new Person();
        //インスタンスの作成
    }
}
Person.java
class Person{
    
}

と作り始める。
これでMainクラスの方でPersonというインスタンスができ、PersonクラスでPersonの詳細を作成する準備ができた。

インスタンスを変数に代入する

作成したnew クラス名();のインスタンスは変数に代入することができる。

Main.java
クラス型 変数 = new クラス名();

例えば、Personクラスのインスタンスを、新たに設定する変数person1に入れようとするときは、

Main.java
class Main{
    public static void main (String[] args){
        Person person1 = new Person();  //クラス型 変数 = new クラス型()
    }
}

これで代入完了。

ちなみに、

Main.java
class Main{
    public static void main (String[] args){
        Person person1 = new Person();
        Person person2 = new Person();
        Person person3 = new Person();
    }
}

とすることで、インスタンスを複数作成することができる。

インスタンスメソッド

インスタンスの動作である、インスタンスメソッドを作成します。
インスタンスのメソッド名を記述して、メインメソッドで呼び出す。

インスタンス.java
public void インスタンスメソッド名() {
    System.out.println("出力したい文章");
}
Main.java
インスタンスもしくはインスタンスを代入した変数.インスタンスメソッド名();

これだけではわかりづらいので、実際にPersonクラスで指定したhelloメソッドを、メインメソッドで呼び出す際の記述を下に書きました。

Main.java
class Main{
    public static void main (String[] args){
        Person person1 = new Person();
        Person person2 = new Person();
        person1.hello();  //変数(インスタンス名).メソッド名();
        person2.hello();
    }
}
Person.java
class Person{
    public void hello() {  //public void メソッド名();
        System.out.println("こんにちは");
    }
}

これでPersonクラスにある、helloメソッドを、Mainクラスで呼び出すことができます。

インスタンスフィールド

次にインスタンスの情報である、インスタンスフィールドを作成していきます。
インスタンスフィールドは情報を格納しておく変数といえるとのこと。(Progate様の説明より)

変数を設定する際はクラスの一番上に置くことも大事。
実際にPersonクラスに名前を入れるインスタンスフィールド(変数name)を設定します。

Person.java
class Person{
    public String name;
  //public データ型 フィールド名;
}

書き方は

    public データ型 フィールド名;

で記述します。

インスタンスフィールドへのアクセス

基本的にMainメソッドでインスタンスフィールドにアクセスしていく。

Main.java
class Main{
    public static void main (String[] args){
        Person person1 = new Person();
        person1.name = "田中";

        System.out.println(person1.name);
    }
}
Person.java
class Person{
    public String name;
}

これで、「田中」と出力できます。

複数作ることが可能。

Main.java
class Main{
    Person person1 = new Person();
    Person person2 = new Person();
    Person person3 = new Person();

    person1.name = "田中";
    person2.name = "藤田";
    person3.name = "杉浦";

    System.out.println(person1.name);
    System.out.println(person2.name);
    System.out.println(person3.name);
}
Person.java
class Person {
    public String name;
}

インスタンスメソッドの中からインスタンスフィールドにアクセス

インスタンスメソッド内からインスタンスフィールドにアクセスする際には、thisという変数を使います。
なくてもできたりしましたが、上記の場合にはしっかりつかいましょう。

Main.java
class{
    Person person1 = new Person();
    person1.name = "田中";
    //インスタンスフィールドへのアクセス
    person1.hello();
    //インスタンスメソッドの呼び出し
}
Person.java
class Person{
    public String name;
    //インスタンスフィールド

    public void hello(){
    //インスタンスメソッド
        System.out.println("私の名前は"+ this.name +"です");
    }
}

また、thisはメソッドが呼び出された際に、呼び出したインスタンスの代わりをします。
これだけだと意味がわかりづらいので、実際に例を挙げます。

Main.java
class{
    Person person1 = new Person();
    person1.name = "田中";
    //インスタンスフィールドへのアクセス
    person1.hello();
    //インスタンスメソッドの呼び出し
}
Person.java
class Person{
    public String name;
    //インスタンスフィールド

    public void hello(){
    //インスタンスメソッド
        System.out.println("私の名前は"+ this.name +"です");
    }
}

上記で言うと、person1というインスタンスがhelloというインスタンスメソッドを呼び出していますね。(person1.hello();の箇所ですね)
そのため、helloメソッドの中では、呼び出し元のperson1というインスタンスをthisで表しています。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?