チュートリアル

Java基礎:メソッド

Java入門メソッドクラス
広告エリア

メソッド

メソッドの定義

public class Calculator {
    // 基本的なメソッド
    public int add(int a, int b) {
        return a + b;
    }

    // 戻り値なし
    public void printMessage(String message) {
        System.out.println(message);
    }

    // 静的メソッド
    public static int multiply(int a, int b) {
        return a * b;
    }
}

// 使用
Calculator calc = new Calculator();
int sum = calc.add(3, 5);
calc.printMessage("Hello");

// 静的メソッドはクラス名で呼び出し
int product = Calculator.multiply(3, 5);

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

public class Printer {
    public void print(String message) {
        System.out.println(message);
    }

    public void print(int number) {
        System.out.println(number);
    }

    public void print(String message, int times) {
        for (int i = 0; i < times; i++) {
            System.out.println(message);
        }
    }
}

可変長引数

public int sum(int... numbers) {
    int total = 0;
    for (int n : numbers) {
        total += n;
    }
    return total;
}

// 使用
int result = sum(1, 2, 3, 4, 5);  // 15

クラス

クラスの定義

public class User {
    // フィールド(インスタンス変数)
    private String name;
    private int age;

    // コンストラクタ
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // ゲッター
    public String getName() {
        return name;
    }

    // セッター
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        }
    }

    // メソッド
    public String introduce() {
        return String.format("私は%sです。%d歳です。", name, age);
    }
}

// 使用
User user = new User("太郎", 25);
System.out.println(user.getName());      // 太郎
System.out.println(user.introduce());    // 私は太郎です。25歳です。

アクセス修飾子

public class Example {
    public int publicField;      // どこからでもアクセス可
    protected int protectedField; // 同一パッケージ + サブクラス
    int defaultField;             // 同一パッケージのみ
    private int privateField;     // 同一クラスのみ
}

コンストラクタ

public class Product {
    private String name;
    private int price;
    private int stock;

    // デフォルトコンストラクタ
    public Product() {
        this.name = "Unknown";
        this.price = 0;
        this.stock = 0;
    }

    // 引数付きコンストラクタ
    public Product(String name, int price) {
        this.name = name;
        this.price = price;
        this.stock = 0;
    }

    // フルコンストラクタ
    public Product(String name, int price, int stock) {
        this.name = name;
        this.price = price;
        this.stock = stock;
    }

    // コンストラクタチェーン
    public Product(String name) {
        this(name, 0, 0);  // 他のコンストラクタを呼び出し
    }
}

staticメンバー

public class Counter {
    // クラス変数(全インスタンスで共有)
    private static int count = 0;

    // インスタンス変数
    private int id;

    public Counter() {
        count++;
        this.id = count;
    }

    // クラスメソッド
    public static int getCount() {
        return count;
    }

    public int getId() {
        return id;
    }
}

// 使用
Counter c1 = new Counter();
Counter c2 = new Counter();
System.out.println(Counter.getCount());  // 2

定数

public class Constants {
    // 定数(static final)
    public static final double PI = 3.14159;
    public static final String APP_NAME = "MyApp";
}

// 使用
double area = Constants.PI * radius * radius;

toString, equals, hashCode

public class User {
    private String id;
    private String name;

    public User(String id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{id='" + id + "', name='" + name + "'}";
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        User user = (User) obj;
        return id.equals(user.id);
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }
}

record(Java 16+)

// 不変データクラスを簡潔に定義
public record User(String id, String name, int age) {
    // コンストラクタ、getter、toString、equals、hashCodeが自動生成
}

// 使用
User user = new User("1", "太郎", 25);
System.out.println(user.name());  // 太郎
System.out.println(user);         // User[id=1, name=太郎, age=25]

まとめ

  • メソッドは戻り値の型、名前、引数で定義
  • クラスはフィールド、コンストラクタ、メソッドで構成
  • privateフィールド + getter/setterでカプセル化
  • staticはクラスレベル、インスタンス不要
  • recordでデータクラスを簡潔に

次回はオブジェクト指向(継承、インターフェース)について学びます。

広告エリア