상세 컨텐츠

본문 제목

[JAVA] 기초 - this 3가지 사용 방법

JAVA/Java 기초

by 미로910 2024. 5. 20. 15:06

본문

💡 목표

 this 3가지 사용 방법을 알자

this 란
1. 인스턴스(객체) 자신의 메모리를 가리킨다.
2. 생성자에서 또 다른 생성자를 호출할 때 사용할 수 있다.
3. 자신의 주소(참조값, 주소값) 를 반환 시킬 수 있다.
public class Person {

	// this의 3가지 사용방법
	// 1. this 는 자기 자신을 가리킨다(인스턴스의 주소)
	// 2. 생성자에 다른 생성자를 호출할 떼 사용할 수 있다.
	// 3. 자신의 주소(참조값, 주소값)를 반환 시킬 수 있다.

	// 변수 -->private
	private String name;
	private int age;
	private String phone;
	private String gender;

	// 1.
	// 생성자
	public Person(String name1, int age) {
		// 자기 자신의 멤버 변수 name 외부에서 들어오는 지역 변수 name을 대입
		// this = 구분 (변수명이랑 매개변수랑)
		this.name = name1;
		this.age = age;
	}

	public Person(String name, int age, String phone) {
		// 생성자에서 다른 생성자를 호출할 수 있다 this(...)
		this(name, age); // 생성자 호출할 때는 제일 먼저 호출함.(밑에 다가 적으면 에러남)
		// this.name = name;
		// this.age = age;
		this.phone = phone;
		// 다른 생성자를 가장 먼저 호출하고 다른 수식을 장석해야 한다.
	}

	public Person(String name, int age, String phone, String gender) {
		this(name, age, phone);
		this.gender = gender;
	}

	// 3. 자신의 주소값으 반환 시킬 수 있다.
	public Person getPerson() {
		// 자신에 주소값을 반환 시킨다.
		return this;

	}

	public void showInfo() {
		System.out.println("이름 : " + name + " 나이 : " + age);
	}

	// setter
	public void setName(String name) {
		this.name = name;
	}

}// end of class
public class PersonTest {

	public static void main(String[] args) {
		
		Person person1 = new Person("홍길동", 100); // heap 메모리 데이터 1개
		Person personBox = person1;
		Person personBox2 = person1.getPerson();	//this 반환
	System.out.println("-------------------");
	// 위 코드까지는 Heap 메모리 영역에 객체가 2개 생성된 상태이다.
	// 지역변수인 person1, personBox, personBox2 는 같은 객체를 가리킨다.
	
	// 연습 문제 - setName 메서드를 만들어 주세요
	
	// setName 메서드는 class 파일에다 만들어야 됨
	
	//이름 바꾸기 이순신 --> 티모
		personBox2.setName("티모");
		person1.showInfo();
		

	}//end of main

}//end of class

 실행 결과_________

 

3개의 참조 변수가 하나의 객체를 가리키고 있다.

setter 메서드 만들기 —> 멤버 변수 name

	--------- Person 코드 추가 ------------------------
	// setter 
	public void setName(String name) {
		this.name = name;
	}
	
	
	
---------- PersonMainTest 코드 추가  ------------------

		// setName 메서드를 만들어 주세요 
		personBox2.setName("티모"); 
		person1.showInfo(); // 결과 확인

 

Getter, Setter 메서드 만드는 연습

public class Person {

	//this의 3가지 사용방법
	// 1. this 는 자기 자신을 가리킨다(인스턴스의 주소) 
	// 2. 생성자에 다른 생성자를 호출할 때 사용할 수 있다.
	// 3. 자신의 주소(참조값, 주소값)를 반환 시킬 수 있다. 
	
	
	// 변수--> private 
	private String name; 
	private int age; 
	private String phone; 
	private String gender; 
	
	// 1. 
	// 생성자 
	public Person(String name, int age) {
		// 자신 자신의 멤버 변수 name 외부에서 들어오는 지역 변수 name을 대입
		this.name = name; 
		this.age = age; 
	}
	
	public Person(String name, int age, String phone) {
		// 생성자에서 다른 생성자를 호출할 수 있다 this(...) 
		this(name, age);	
		this.phone = phone;
		// 다른 생성자를 가장 먼저 호출하고 다른 수식을 작성해야 한다. 
//		this.name = name; 
//		this.age = age;

	}
	
	public Person(String name, int age, String phone, String gender) {
		this(name, age, phone);
		this.gender = gender;
	}
	
	// 3. 자신의 주소값을 반환 시킬 수 있다. 
	public Person getPerson() {
		// 자신에 주소값을 반환 시킨다. 
		return this;
	}
	
	public void showInfo() {
		System.out.println("이름 : " + name + ", 나이 : " + age);
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}
	
}

 

관련글 더보기