Menu
CoddyTech

字段(属性)

本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 6 课,共 87 课。

字段(属性)是在类内部存储数据的变量。它们通常是 private,并通过 getter 和 setter 方法访问。

声明字段

public class Person {
    private String name;
    private int age;
}

添加 getter 和 setter

public class Person {
    private String name;
    private int age;
    
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public int getAge() {
        return this.age;
    }
    
    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        }
    }
}

使用类

Person person = new Person();
person.setName("Alice");
person.setAge(25);
System.out.println(person.getName());  // Alice

将字段设为 private 称为封装。它通过方法控制访问来保护数据,让你可以在 setter 中添加验证。

challenge icon

挑战

中等

创建一个包含私有字段和 getter 方法的 BankAccount 类:

  • 私有字段:accountName(String)和 balance(double)
  • 一个用于设置这两个字段的构造函数
  • 每个字段都要有 getter 方法
  • 用于存入金额的 deposit() 方法
  • withdraw() 方法,返回 "Success" 或 "Insufficient funds"

亲手试试

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        double initial = Double.parseDouble(scanner.nextLine());
        double deposit = Double.parseDouble(scanner.nextLine());
        
        BankAccount account = new BankAccount(name, initial);
        
        System.out.println("Account: " + account.getAccountName());
        System.out.println("Balance: " + account.getBalance());
        
        account.deposit(deposit);
        System.out.println("After deposit: " + account.getBalance());
        
        String result = account.withdraw(2000);
        System.out.println("Withdraw 2000: " + result);
        System.out.println("Final Balance: " + account.getBalance());
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: Java 在线编译器