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学習メモ2 コンストラクタ

Last updated at Posted at 2023-04-22

概要

Java学習メモ1 インスタンスの続きです。
間違いがあったら教えてください。

目次

  • コンストラクタ

コンストラクタ

newでインスタンスを作成した後に、自動で呼び出される(自動で処理がされる?)特別なメソッドのこと

  1. クラス名と同じ名前にする
  2. 戻り値やvoidを書いてもいけない

この2つを守らなければなりません。」

new インスタンス名();でインスタンスを生成する際、()には引数を渡すことができます。
(インスタンスの生成とともに呼び出してくれるものだから、「newで生成した際に、コンストラクタに渡したい値をセッ」ト→「コンストラクタにその値を受け取る準備をする」)
そして、その引数はコンストラクタに受け渡すことができます。

Main.java
class Main {
  public static void main(String[] args) {
    Person person1 = new Person("Kate", "Jones", 27, 1.6, 50.0);
    
    System.out.println(person1.firstName);
    System.out.println(person1.lastName);
    System.out.println(person1.age);
    System.out.println(person1.height);
    System.out.println(person1.weight);
  }
}
Person.java
class Person {
  public String firstName;
  public String lastName;
  public int age;
  public double height;
  public double weight;

//以下、コンストラクタPersonに、Main.javaで引数に設定した"Kate", "Jones", 27, 1.6, 50.0
//を受け取るためにString firstName, String lastName, int age, double height, 
//double weightを記述する
  Person(String firstName, String lastName, int age, double height, double weight){
//以下の記述を忘れない
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.height = height;
    this.weight = weight;
  }
  
}

インスタンスメソッドを作成

上記の記述に付け加えをしていきます。
Person.javaにfullNameメソッド、bmiメソッドを付け加えていきます。

その際、インスタンスメソッドの作成なので、「public データ型 インスタンス名」

Main.java
class Main {
  public static void main(String[] args) {
    Person person1 = new Person("Kate", "Jones", 27, 1.6, 50.0);
    
//以下、MainクラスでfullNameメソッドと、bmiメソッドの呼び出しをする
    System.out.println(person1.fullName());
    System.out.println(person1.age);
    System.out.println(person1.bmi());
  }
}
Person.java
class Person {
  public String firstName;
  public String lastName;
  public int age;
  public double height;
  public double weight;

  Person(String firstName, String lastName, int age, double height, double weight){
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.height = height;
    this.weight = weight;
  }

//以下、fullNameメソッド内で、インスタンスフィールドのfirstName,lastNameを呼び出す。
//インスタンスメソッド内から、インスタンスフィールドを呼び出すのでthisをつける
  public String fullName(){
    return this.firstName + "" + this.lastName;
  }

  public double bmi(){
    return this.weight / this.height / this.height;
  }
  
}

他のインスタンスメソッドを呼び出す

インスタンスメソッドでインスタンスメソッドを呼び出します。
fullNameメソッドやbmiメソッドを呼び出せるprintDataメソッドをPersonクラスに記述します。

Main.java
class Main {
  public static void main(String[] args) {
    Person person1 = new Person("Kate", "Jones", 27, 1.6, 50.0);
    person1.printData();
    
    Person person2 = new Person("John", "Smith", 65, 1.75, 80.0);
    person2.printData();    
    
  }
}
Person.java
class Person {  
  
  public String firstName;
  public String lastName;
  public int age;
  public double height, weight;

  Person(String firstName, String lastName, int age, double height, double weight) {
    
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.height = height;
    this.weight = weight;
  }

  public String fullName() {
    return this.firstName + " " + this.lastName;
  }

  public double bmi() {
    return this.weight / this.height / this.height;
  }
  
  public void printData() {
    //↑printDataメソッドには戻り値がないので、public void メソッド名にしている
    //voidは戻り値がないという意味
    System.out.println("私の名前は" + this.fullName() + "です");
    System.out.println("年齢は" + this.age + "歳です");
    System.out.println("BMIは" + Math.round(this.bmi()) + "です");
  }
}
0
0
1

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?