package CHAPTER05;

//Person 클래스 정의
class Person2 {
	String name; // 이름 저장
	int age; // 나이 저장

	// 이름 설정 메소드 - 현재 객체(this)를 반환하여 체이닝 가능
	Person2 setName(String name) {
		this.name = name; // 멤버 변수에 값 설정
		return this; // 현재 객체 반환하여 메소드 체이닝 지원
	}

	// 나이 설정 메소드 - 현재 객체(this)를 반환하여 체이닝 가능
	Person2 setAge(int age) {
		this.age = age; // 멤버 변수에 값 설정
		return this; // 현재 객체 반환하여 메소드 체이닝 지원
	}

	// 자기소개 메소드
	void introduce() {
		System.out.println("이름: " + name + ", 나이: " + age);
	}
}

//실행 클래스
public class C5_16_MethodChaining {
	public static void main(String[] args) {

		Person2 p = new Person2(); // Person 객체 생성

		// 메소드 체이닝을 사용하여 연속적인 설정 및 출력
		p.setName("문석재").setAge(25).introduce();
		// setName() 실행 후 현재 객체 반환 → setAge() 실행 후 현재 객체 반환 → introduce() 실행
	}
}
