ゼロから学ぶJava
トップ/クラスとオブジェクト
クラスとオブジェクト26章 / 全26

フィールドとメソッド

この章で学ぶこと

クラスの「フィールド」と「メソッド」が連携する仕組みを学びましょう。現実の「もの」をプログラムで表現する感覚が身につきます。

「もの」はデータと機能でできている

「人間」をクラスで表すとしたら、こうなります。

要素
フィールド(データ)名前、年齢、身長
メソッド(機能)歩く、話す、食べる

フィールドが「状態を記憶する」、メソッドが「状態を変えたり使ったりする」役割を持ちます。

フィールドとメソッドで銀行口座を作る

text
110000円を入金しました。残高:10000円
25000円を入金しました。残高:15000円
33000円を出金しました。残高:12000円
4残高が足りません
java
1class BankAccount {
2 String owner;
3 int balance;
4
5 void deposit(int amount) {
6 balance += amount;
7 System.out.println(amount + "円を入金しました。残高:" + balance + "円");
8 }
9
10 void withdraw(int amount) {
11 if (balance >= amount) {
12 balance -= amount;
13 System.out.println(amount + "円を出金しました。残高:" + balance + "円");
14 } else {
15 System.out.println("残高が足りません");
16 }
17 }
18}
19
20public class Main {
21 public static void main(String[] args) {
22 BankAccount account = new BankAccount();
23 account.owner = "田中たろう";
24 account.balance = 0;
25
26 account.deposit(10000);
27 account.deposit(5000);
28 account.withdraw(3000);
29 account.withdraw(20000);
30 }
31}
  • String owner; / int balance; → フィールド(口座名義と残高を記憶する)
  • void deposit(int amount) → 入金メソッド。amount 円を受け取って残高に足す
  • balance += amount; → 残高に入金額を足す(balance = balance + amount の短縮形)
  • void withdraw(int amount) → 出金メソッド。残高不足なら断る
  • balance フィールドを depositwithdraw の両方が読み書きしている。フィールドが「状態」、メソッドが「状態を変える機能」という役割分担

ポイント

フィールドはクラスのデータ(状態)、メソッドはクラスの機能(できること)です。フィールドとメソッドが連携することで、現実のものをプログラムで表現できます。

よくあるミス

別のインスタンスのデータを操作してしまう

account.balanceaccount2.balance は別の値です。どのインスタンスのフィールドやメソッドを操作しているかを意識しましょう。

まとめ

  • フィールド:クラスが持つデータ(名前、残高など)
  • メソッド:クラスが持つ機能(入金する、出金するなど)
  • フィールドとメソッドが連携して「もの」の振る舞いを表現する
  • クラス・フィールド・メソッド・インスタンスがJavaの基本的な土台

確認問題

クラスのフィールドとメソッドの組み合わせとして正しい説明はどれですか?