본문 바로가기

국비지원_핀테크

10일차_ [java] this, getter / setter

 

 

 

 

 

this

this

 

package this_;

class Test01{
	public int num = 12345;
	public void test() {
		int num = 303030;
		System.out.println("this : " + this); // this 는 자기 자신에 대한 정보를 의미 ( 클래스의 위치 )
		System.out.println("this : " + this.num); // 12345
		System.out.println("num : " + num); // 303030
		// this 를 사용하지 않으면 현재 지역에서 먼저 해당 값을 찾아서 출력한다
		// this 를 사용하면 자신 클래스 위치에서 부터 해당 값을 찾아서 하위로 내려온다
	}
}

public class Ex01 {
	public static void main(String[] args) {
		Test01 t = new Test01();
		System.out.println(" main : " + t); // Test01 클래스가 저장되어 있는 위치 값 반환
		System.out.println("main num : " + t.num); // Test01 클래스 하위의 num 메소드를 반환하여 실행
		
		t.test(); // Test01 클래스가 저장되어 있는 위치로 접근하여 해당 클래스 하위의 test() 메소드를 실행
		// this : this_.Test01@2133c8f8
		// this : 12345
		// num : 303030
	}
}

this 의 사용법과 의미

 

 

 

 

 

 

 

 

 

 

 

은닉화

package set_get;

class Test01{
	// 접근 제어자 private 을 사용하여 인스턴스 변수 num 을 은닉화 시킴 ( 외부 접근을 허용하지 않음 )
	private int num = 12345;
	public void test(int n) {
		// private 은 외부에서는 접근이 불가하지만 내부에서는 접근이 가능!!!
		num = n;
	}
	public int test2() {
		return num;
	}
}

public class Ex01 {
	public static void main(String[] args) {
		Test01 t = new Test01();
		t.test(1000); // 인스턴스 변수인 num 에 직접 접근하지는 못하지만 메서드를 이용하여 같은 클래스에 접근하여 값을 변경
		System.out.println(t.test2()); // 마찬가지로 출력도 메서드를 사용하여 private 값에 접근하여 값을 출력
	}
}

은닉화 하는 방법

( 은닉화의 문제점은 값에 접근하고 값을 가져오는데 최소 메소드가 2개씩 필요..... 메소드를 많이 만들다보니 메소드의 이름이 규격화되지 않아 헷갈리게 된다...... )

( getter / setter 를 사용하여 해당 메소드를 규격화 하였음....!!! )

 

 

 

 

 

 

 

 

 

 

getter / setter

package set_get;

class Test02{
	private int num, age; // 접근 제어자 private 을 사용하여 외부에서 접근을 금지
	public void setNum(int n) { // set
		num = n;
	}
	public int getNum() { // get
		return num;
	}
	public void setAge(int a) { // set
		age = a;
	}
	public int getAge() { // get
		return age;
	}
}

public class Ex02 {
	public static void main(String[] args) {
		Test02 t = new Test02();
		t.setNum(3); // set 을 사용하여 priavte 인스턴스 변수에 접근 및 변경
		t.setAge(20); // set 을 사용하여 priavte 인스턴스 변수에 접근 및 변경
		int num = t.getNum(); // get 을 사용하여 인스턴스 변수에 접근
		int age = t.getAge(); // get 을 사용하여 인스턴스 변수에 접근
		System.out.println(num + ", " + age); // 3, 20 출력
	}
}

get / set 메소드 생성 및 사용

 

package set_get;

class Test02{
	private int num, age; // 접근 제어자 private 을 사용하여 외부에서 접근을 금지

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
		// this 를 사용하여 최상단 자기 자신의 클래스부터 num 이라는 변수를 찾아서 사용
		// this.num 을 사용함으로써 클래스 내의 인스턴스 변수인 num 을 의미한다고 명시
		// 이후 우항의 num 은 매개변수로 받아온 num 이 대입된다
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
		// this 를 사용하여 최상단 자기 자신의 클래스부터 num 이라는 변수를 찾아서 사용
		// this.age 을 사용함으로써 클래스 내의 인스턴스 변수인 age 를 의미한다고 명시
		// 이후 우항의 age 는 매개변수로 받아온 age 가 대입된다
	}
	
}

public class Ex02 {
	public static void main(String[] args) {
		Test02 t = new Test02();
		t.setNum(3); // setter 를 사용하여 priavte 인스턴스 변수에 접근 및 변경
		t.setAge(20); // setter 를 사용하여 priavte 인스턴스 변수에 접근 및 변경
		int num = t.getNum(); // getter 를 사용하여 인스턴스 변수에 접근
		int age = t.getAge(); // getter 를 사용하여 인스턴스 변수에 접근
		System.out.println(num + ", " + age); // 3, 20 출력
	}
}

java 는 getter / setter 를 자동 생성할때 setter 의 매개변수를 실제 변수의 이름으로 생성하게 되는데 이때, 변수명이

서로 같아지게 되므로 this 를 사용하여 자신이 속한 클래스의 인스턴스 변수임을 선언하여 사용한다.

728x90