package CHAPTER05;

//Animal 클래스 정의
class Animal {
	String name; // 동물의 이름을 저장할 멤버 변수

	// 생성자: 객체 생성 시 이름을 초기화
	Animal(String name) {
		this.name = name; // this를 사용하여 멤버 변수와 매개변수 구분
	}

	// 자기소개 메소드
	void introduce() {
		System.out.println("안녕하세요, 저는 " + this.name + "입니다."); // this를 사용하여 현재 객체의 name 출력
	}

	// 다른 동물과 인사하는 메소드
	void greet(Animal other) {
		System.out.println(this.name + "가 " + other.name + "에게 인사합니다.");
		// this.name: 현재 객체의 이름
		// other.name: 전달받은 객체(other)의 이름
	}
}

//실행 클래스
public class C5_14_ReferenceCurrentInstance {
	public static void main(String[] args) {
		Animal a1 = new Animal("Lion"); // "Lion" 이름을 가진 객체 생성
		Animal a2 = new Animal("Tiger"); // "Tiger" 이름을 가진 객체 생성

		a1.introduce(); // 자기소개 메소드 호출
		a1.greet(a2); // a1이 a2에게 인사
	}
}

