【Java初歩】メソッドとフィールド、クラス、コンストラクタについて


Java初心者用の学習めもです。
メソッドやフィールド、クラスの違いやコンストラクタとは?について記録しています。

メソッド

・メソッドは、繰り返し使える処理のかたまり(関数)のこと
・メソッド名の後()内に引数を指定できる


[修飾子] [戻り値のデータ型] メソッド名(引数){
    メソッドの処理内容
}

・値を返す場合は「return」を使う

MyTest.java
//クラス
public class MyTest{      
//sayHelloメソッド
    public static String sayHello(String name){
        return "Hello" + name;
    }
//mainメソッド    
    public static void main(String[] args){
        String msg = sayHello("Bob");
        System.out.println(msg);
    }  
}

メソッドのオーバーロード

・オーバーロードとは、同クラスの中で同じメソッド名で、引数の型や数や並び順が違うメソッドを2つ以上定義すること

MyTest.java
public class MyTest {
  public static void sayHello(String name) {
    System.out.println("Hello" + name);
  }

  // オーバーロード
  public static void sayHello() {
    System.out.println("Hello!everyone!");
  }

  public static void main(String[] args) {
    sayHello();//引数なし
    sayHello("Bob"); //String型の引数を指定
  }

}

フィールド

・フィールドとは、クラスの内部に定義した変数のこと
・フィールドの変数は、各メソッド内で利用することができる

[修飾子] データ型 フィールド変数名; //フィールドの書き方

クラス

・クラスとは、プログラムを実行するための処理をまとめたオブジェクトのこと
・クラスにはメソッドとフィールドを定義する
・class の後にクラス名を定義する(最初は必ず大文字)
・クラスは参照型のため、メモリ領域にデータを確保するためには「new」する必要がある
・newすることを「インスタンス化」と呼ぶ

MyTest.java
//User型クラス
class User {

  String name = "Me!"; // フィールド初期化
  void sayHello() {
    System.out.println("hello");
  }
}

public class MyTest {

  public static void main(String[] args) {
    User tom;//User型のtomを宣言
    tom = new User(); // インスタンス化
    System.out.println(tom.name);
    tom.sayHello();
  }

}

コンストラクタ

・コンストラクタは、インスタンス化の際に自動で実行されるメソッド(処理)のこと
・コンストラクタ名はクラス名と同じ名前で以下のように書く
・()内に引数を指定できる

public クラス名(){
        処理内容;
    }

・コンストラクタでインスタンスのフィールドにアクセスするには「this」と書く
・「this」は このインスタンス という意味
・コンストラクタはメソッドのため、オーバーロードもできる

MyTest.java
class User {
  String name;
  // コンストラクタ
  User(String name) {
    this.name = name;
  }

  // コンストラクタ
  User() {
    // this.name = "Me!";
    this("Me!");
  }
  //メソッド
  void sayHello() {
    System.out.println("hello! " + this.name);
  }
}

public class MyTest {

public static void main(String[] args) {
        User tom;
        //クラスのnameフィールドをtomに指定
        tom = new User("tom");
        System.out.println(tom.name);

        //hello!Me!
        tom = new User();
        tom.sayHello();
  }

}

クラスの継承

・クラスの継承とは、既にあるクラスの共通する機能を引き継ぐこと
・継承元をスーパークラス(親クラス)、継承先をサブクラス(子クラス)とよぶ
・以下のように書く


class サブクラス名 extends スーパークラス名 {}

・親クラスのコンストラクタは「super()」で指定できる
・親クラスのメソッドを上書きすることを「オーバーライド」という

MyTest.java
class User {
    String name;

    User(String name) {
        this.name = name;
    }

    void sayHello() {
        System.out.println("hello! " + this.name);
    }
}

//クラスの継承
class PopUser extends User {

    PopUser(String name) {
        super(name);//親クラスコンストラクタの引数を指定
    }

    void sayThanks() {
        System.out.println("Thanks! " + this.name);
    }

    // オーバーライド
    @Override//オーバーライドを明示できる
    void sayHello() {
        System.out.println("[pop] hello! " + this.name);
    }
}

public class MyTest {

    public static void main(String[] args) {
        User tom = new User("tom");//1行でインスタンス化できる
        System.out.println(tom.name);
        tom.sayHello();

        PopUser bob = new PopUser("bob");
        System.out.println(bob.name);
        bob.sayHello();
    }

}

ここまで。