필드 (속성)
Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 6번째.
필드(속성)는 클래스 내부에서 데이터를 저장하는 변수입니다. 이들은 보통 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에서 유효성 검사를 추가할 수 있도록 해줍니다.
챌린지
중급프라이빗 필드와 게터(getter) 메서드를 가진 BankAccount 클래스를 생성하세요:
- 프라이빗 필드:
accountName(String) 및balance(double) - 두 필드를 설정하는 생성자
- 각 필드에 대한 게터 메서드
- 돈을 추가하는
deposit()메서드 - "Success" 또는 "Insufficient funds"를 반환하는
withdraw()메서드
치트 시트
필드(속성)는 클래스 내부에 데이터를 저장하는 변수입니다. 일반적으로 private으로 설정되며 getter 및 setter 메서드를 통해 접근합니다.
private 필드 선언하기:
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으로 만드는 것을 캡슐화(encapsulation)라고 합니다. 이는 메서드를 통해 접근을 제어함으로써 데이터를 보호하며, setter에서 유효성 검사를 추가할 수 있게 해줍니다.
직접 해보기
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());
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
4상속
상속의 기초 (extends)super 키워드메서드 오버라이딩 (@Override)생성자 체이닝Object 클래스단일 및 다중 레벨 상속다중 클래스 상속이 불가능한 이유요약 - 직원 계층 구조