이번 편의 목표: 제목과 연체 일수를 한 객체의 필드로 두고, 그 객체의 메서드로 연체료를 계산합니다.
메서드만 분리하면 제목과 일수는 여전히 따로 놀습니다. 클래스는 자료와 그 자료를 다루는 동작을 한 틀로 정의합니다. 객체는 그 틀로 만든 개별 책입니다.
필드와 메서드
public class Book {
String title;
int lateDays;
int lateFee() {
return lateDays * 100;
}
public static void main(String[] args) {
Book first = new Book();
first.title = "개미";
first.lateDays = 3;
Book second = new Book();
second.title = "공책";
second.lateDays = 0;
System.out.println(first.title + " " + first.lateFee());
System.out.println(second.title + " " + second.lateFee());
}
}new Book()이 객체를 만듭니다. first와 second는 서로 다른 객체이므로 필드를 바꿔도 다른 객체에 영향을 주지 않습니다. 출력은 개미 300과 공책 0입니다.
인스턴스 메서드 lateFee는 static이 아닙니다. 호출할 때 어떤 객체의 일수를 쓸지 객체 이름으로 지정합니다. this.lateDays라고 적어도 같은 필드를 가리킵니다. 이름이 겹치지 않으면 this를 생략할 수 있습니다.
이 필드는 아직 누구나가 바꿀 수 있습니다. 음수 일수도 들어갈 수 있습니다. 다음 편에서 생성 시점에 검사하고 필드를 숨깁니다.
직접 해 보기
Book 객체 두 개를 만들어 연체 일수 1과 4를 넣고, 두 연체료의 합을 출력하세요.
해설
public class BookSum {
String title;
int lateDays;
int lateFee() {
return lateDays * 100;
}
public static void main(String[] args) {
BookSum a = new BookSum();
a.lateDays = 1;
BookSum b = new BookSum();
b.lateDays = 4;
System.out.println(a.lateFee() + b.lateFee());
}
}출력은 500입니다. 연습용 클래스 이름을 BookSum으로 둔 이유는 한 파일에 public class Book이 이미 있으면 파일 이름과 충돌하기 때문입니다. public 클래스는 파일 이름과 같아야 합니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.