LoginSignup
0
0

More than 1 year has passed since last update.

JAVA学習の記録⑥ 【コンストラクター】

Last updated at Posted at 2023-03-18

前回までの学びJAVA学習の記録⑤ 【オーバーロード】

目次

1.コンストラクター
2.this
3.デフォルトコンストラクター

コンストラクター

コンストラクターとは、インスタンスが生成されるタイミングで呼び出される特殊なメソッド。インスタンスを生成する際に必須の初期処理がある場合に使う。コンストラクターを使うと、インスタンス生成時に引数として初期値を渡すことができる。
これまでの処理

UseDog.java
public class UseDog {
  public static void main(String[] args) {
    Dog pochi = new Dog(); //Dogのpochiインスタンスを生成
    pochi.setName("ポチ"); //フィールドに名前を設定
    pochi.setAge(5);       //フィールドに年齢を設定

コンストラクターを使った場合

UseDog.java
public class UseDog {
  public static void main(String[] args) {
    Dog pochi = new Dog("ポチ",5);

コンストラクターの定義

コントラクターの定義は、通常のメソッドの定義と似ているが、違いはメソッド名は必ずクラス名と同じにすること、戻り値の型の指定を書かないこと。

public Dog(String n, int a) {
  //処理
}
アクセス修飾子 クラス名(引数の型 引数名) {
  //処理
}

引数のないコンストラクターを呼び出す場合

Dog.java
public class Dog {
  String name = "引数なしの場合";
  public Dog() {
    System.out.println(name);
  }
DogConstructor.java
public class DogConstructor {
  public static void main(String[] args) {
    Dog pochi = new Dog();
  }
} 

出力結果

引数なしの場合

引数のあるコンストラクターを呼び出す場合

Dog.java
public class Dog {
  String name = "引数ありの場合";
  public Dog(String name) {
    System.out.println(name);
  }
DogConstructor.java
public class DogConstructor {
  public static void main(String[] args) {
    Dog pochi = new Dog("引数ありの場合に表示");
  }
} 

出力結果

引数ありの場に表示

このインスタンスを表すthisキーワード

コンストラクターでフィールドを初期化する時に、引数の変数名がフィールドの変数名と同じにできる。つまり、フィールド名と同じ名前のローカル変数が定義できる。***しかし、フィールド名と同じ名前のローカル変数がある場合、ローカル変数へのアクセスとなる。***フィールド名と同じ名前のローカル変数がある場合に、フィールドにアクセスしたいときは、明示的に「this.フィールド名」と記述する。

Dog.java
public class Dog {
  private String name; //nameフィールド定義
  private int age;     //ageフィールド定義
  public Dog(String name, int age) {
    System.out.println(name); //nameは、引数で渡されたローカル変数nameを示す
    System.out.println(this.name); //this.nameは、nameフィールドを示す
    this.name = name; //引数で受けたローカル変数nameをnameフィールドに代入
    this.age = age;  //引数のローカル変数ageをageフィールドに代入
  }

デフォルトコンストラクター

クラスに1つもコンストラクターが定義されていない時に、デフォルトコンストラクターというコンストラクターが暗黙的に追加される。デフォルトコンストラクターは、引数もなく、中の処理もないコンストラクターであるが、ないと引数なしでインスタンスを生成することはできない。引数のあるコンストラクターを追加した場合は、デフォルトコンストラクターは追加されない。

参考文献
「いちばんやさしいJAVAの教本」著者 石井真

0
0
0

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