34
36

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 5 years have passed since last update.

【Java】インスタンスメソッド、インスタンスフィールド、クラスメソッド、クラスフィールド、コンストラクタまとめ

Last updated at Posted at 2019-04-03

Javaを学んでいく中で結構混乱した部分をまとめます。
参考にしているのはProgateです。

1.インスタンスメソッド

インスタンスメソッドはインスタンスが持つ・インスタンスに持たせる「振る舞い」。

メソッドの定義の仕方

public <戻り値の型> <メソッド名>(){
 <メソッドの中身>
}

のように書く。

メソッドの呼び出し方


/* Personクラスのインスタンス、person1を作成 */
Person person1 = new Person();

/* helloメソッドの呼び出し */
person1.hello();

のように呼び出す。

2.インスタンスフィールド

インスタンスフィールドはインスタンスが持つ情報を格納する変数。

インスタンスフィールドの定義の仕方

class Person {
  /* 変数なので型を宣言する */
  public String name;
}

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

/* インスタンスを生成 */
Person person1 = new Person();
/* nameに値をセット */
person1.name = "Suzuki";

/* nameの値を取得 */
System.out.println(person1.name);

このようにアクセスできる。

3.クラスメソッド

クラスに属するメソッド。

クラスメソッドの定義の仕方

class Person {
  public static <戻り値の型> <メソッド名>() {
    <メソッドの中身>
  }
}

※インスタンスメソッドと異なり、static をつけることに注意。

クラスメソッドの呼び出し方

<クラス名>.<メソッド名>();

このように呼び出す。
親の顔ほど見たpublic static void <メソッド>(){ } は実はクラスメソッドのこと。

4.クラスフィールド

クラスに属するフィールド。
クラスに持たせる情報を格納する変数。

クラスフィールドの定義の仕方

class Person {
  public static <データ型> <変数名>;
}

※インスタンスフィールドと異なり、static をつける

クラスフィールドへのアクセス方法

Main.java
class Main {
  public static void main(String[] args) {
    System.out.println("合計" + Person.count + "人です");
    Person person1 = new Person( ... );
    System.out.println("合計" + Person.count + "人です");
  }
}
Person.java
class Person {
  /* countという変数に人数という情報を格納していく */
  public static int count = 0;
  .........
  Person(String firstName, ...) {
    Person.count ++;
  }
}
> 合計0人です
> 合計1人です

※インスタンス生成のたびにcountに1ずつ足していっている

5.コンストラクタ

newでインスタンスを生成後自動で呼び出されるメソッド。
定義方法が決まっているので注意

コンストラクタの定義方法

class Person {
  public String name;
  Person() {
    /* インスタンス生成時行いたい処理 */
  }
}

コンストラクタはPerson() {} の部分。
メソッドの宣言と書き方が似ている。
しかしメソッドとは違い戻り値はないしvoidも不要。
なぜなら、コンストラクタの戻り値は必ずそのクラスのインスタンスであり、
明示しなくてもコンパイラはわかってくれる。
以下はコンパイラの実例。

インスタンス生成時に、インスタンスフィールドにセットしたい値をコンストラクタの引数に渡す

Person.java
class Person {
  public String name;
  Person(String name) {
    this.name = name;
  }
}

コンストラクタの呼び出し方

Main.java
Person person = new Person("Suzuki");
System.out.println(person.name);

6.まとめ

修飾子 static データ型 メソッド名orフィールドの変数名 メソッド名
インスタンスメソッド public - データ型 メソッド名
インスタンスフィールド public - データ型 フィールドの変数名
クラスメソッド public static データ型 メソッド名
クラスフィールド public static データ型 フィールドの変数名
コンストラクタ public - データ型 変数名 クラス名

混乱しやすいですね!
以上です!

34
36
3

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
34
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?